猿问

instanceof的疑问

在知乎看到帖子,a instanceof A的意义就是,对a,在其原型链查找(__proto__),如果找到A.prototype,就返回true。下面的代码有点不理解。


Function instanceof Object // true 

 Object instanceof Function // true 

 Function instanceof Function //true

 Object instanceof Object // true

 Number instanceof Number //false

其他测试(也不太理解)


Object.__proto__ === Function.prototype;//true

Function.__proto__ === Function.prototype//true

Function.__proto__ === Object.__proto__;//true


智慧大石
浏览 473回答 1
1回答

慕侠2389804

js的类是基于原型链的我说一下下面三个://假设你定义一个A函数:var A = new Function();//然后创建了一个A实例(对象)叫a:var a = new A();console.log(a instanceof A); //输出为true,A是A类的构造函数,a是A类的一个对象//因为a和A都有一个原型对象,分别保存在它们不同的属性console.log(a.__proto__ == A.prototype); //同样Object也是一个构造函数,所以我们多了这样声明一个空对象的写法:var o = new Object(); //既然Object是一个函数,那么就是Function的实例:console.log(Object.__proto__ == Function.prototype); //trueconsole.log(Object instanceof Function); //true//同理Function也是一个构造函数,所以有这么写://如上面的:var A = new Function(),于是:console.log(Function.__proto__ == Function.prototype); //trueconsole.log(Function instanceof Function); //true//所以:console.log(Function.__proto__ == Object.__proto__); //true//另外原型本身是个对象,即Function.prototype是对象:Function.prototype.__proto__ == Object.prototype; //true总结一下:Object.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototypeFunction.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototypeNumber.__proto__=>Function.prototype=>Function.prototype.__proto__=>Object.prototype
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答