函数的本质
函数的本质就是对象。
某些教程中,将构造函数称之为构造器 所有的对象都是通过关键字new出来的,
new 构造函数()
所有的函数,都是通过new Function创建。
Function
js
// function sum(a, b) {
// return a + b;
// }
var sum = new Function("a", "b", "return a+b");
console.log(typeof sum);
console.log(sum(3, 5));由于函数本身就是对象,因此函数中,可以拥有各种属性。
js
function User(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.fullName = this.firstName + " " + this.lastName;
}
User.abc = 123;
User.test = function(){
console.log("test")
}
User.test();
console.log(User.abc);包装类
JS为了增强原始类型的功能,为boolean、string、number分别创建了一个构造函数:
- Boolean
- String
- Number
如果语法上,将原始类型当作对象使用时(一般是在使用属性时),JS会自动在该位置利用对应的构造函数,创建对象来访问原始类型的属性。
类:在JS中,可以认为,类就是构造函数
成员属性(方法)、实例属性(方法):表示该属性是通过构造函数创建的对象调用的。 静态属性(方法)、类属性(方法):表示该属性是通过构造函数本身调用的。
js
const n=3.1415926;
//这个地方会自动使用Number构造函数 new NUmber(2).tofixed(2) 实例方法
n.tofixed(2);//n本身不是对象类型,所以直接使用调用toFixed会让人感到疑惑,这里自动做了构造函数转换
Number.isFinite(2);//静态方法