JavaScript中一个函数引发的血案


规则:
1.所有的对象都有__proto__属性,指向他构造函数的原型
2.函数具有prototype属性,指向该函数的prototype
3.函数也是对象,所以函数也有__proto__属性,指向构造函数的原型,其构造函数即为Function函数
4.所有的函数都是Function的实例
5.所有函数的原型的__proto__都是Object的一个实例
6.内置函数的构造函数是一个匿名函数,且没有prototype 如 Function,Array,Object
7.JavaScript高级程序设计P110每个函数都是Function的实例
function f(){}; //
var f1 = new f();//
var f0 = f.prototype.__proto__ ;//使f0指向f的原型的原型对象
得出以下结论:
1. f1.__proto__ == f.prototype //规则1
2. f.__proto__ == Function.prototype //规则3 和 规则4
3. f0.__proto__==f.prototype.__proto__.__proto__ == Object.prototype.__proto__==null //规则5和规则1
4. f.prototype.__proto__== Function.prototype.__proto__; Function.prototype.__proto__ == Object.prototype ;
5. Function.__proto__ == Object.__proto__ //内置函数的构造函数是同一个函数
6. Function.__proto__.__proto__ == Object.prototype //内置函数的构造函数的构造函数是Object
7. Object.prototype.__proto__ == null
8. typeof(Function.__proto__) == "function"
9. Function.__proto__ instanceof Function == false //结合7,这证明instanceof不是要来检测实例的万无一失的方法或者规则 7是错误的,

问题:instanceof是检测什么的;Function的__proto__是什么,既然是个函数那么为什么没有prototype属性。

猜你喜欢

转载自www.cnblogs.com/sz-toosimple/p/11441192.html