在JavaScript的世界里没有类的概念,JavaScript是一种基于对象的语言,它包含5中原生数据类型:
number
boolean

string
null
undefined

除此之外,其他所有的都是对象,函数也是一个对象

// 这是一个函数声明,函数是一个特殊的对象
function method() {
}

构造函数,就是一个普通的函数,与其他函数没有任何区别,可以理解为 函数==构造函数,它只是概念上的一个定义,使用它用来实例化对象.
对于JavaScript的内置对象,Object、Array、Date等等这些都是构造函数.
function Obj() {
}
var o = new Obj(); // 实例化

使用new运算符返回的对象并不一定是实例本身,也可以在构造函数用使用return改变返回值
function Obj() {
this.a = 1;
return { a: 3};
}
var o = new Obj(); // o并不是Obj的实例
console.log(o.a); // 输出3

前面说到了函数也是一个对象,在JavaScript的内置对象中,所有的函数对象都是Function构造函数的实例,比如:Object、Array等等,这是一个很有意思的事情.

使用 instanceof 这个运算符就可以校验
instanceof运算符返回一个指定的对象是否一个类的实例,格式如:A instanceof B.其中,左操作数必须是一个对象,右操作数必须是一个类(构造函数).
如果函数B在对象A的原型链中被发现,那么instanceof操作符将返回true,否则返回false.
alert(Function instanceof Function); // Function函数对象 本身就是自己的一个实例
alert(Object instanceof Function); // Object函数对象 是 Function构造函数的一个实例

2 1 收藏


直接登录