var Human = function (name) {
this.name = name;
}
Human.prototype.sayName = function () {
console.log(this.name);
}
var klam = new Human('klam');
输出 Human.__proto__的时候,按理该输出Function.prototype,但再Chrome浏览器中显示: function Empty () {}。
再输出 Human.__proto__.constructor,结果为:function Function() { [native code] },这没问题
最后不死心再试试 Human.__proto__.constructor.prototype,又成:function Empty() {}了。
这个function empty究竟是个什么?
SF原题what-is-function-empty-in-javascript
知乎原题function Empty是一个什么样的东西
我觉得对着呢。
对象的内部属性[[Prototype]](也就是楼主提到的proto)指向该对象的构造函数的原型对象。
那么:
chrome运行结果为true。
至于指向的东西,我也不懂。
见 ECMAScript 规范:
proto在chrome下不能直接访问到的,想看去ff下看。
Human.proto 指的是实例化Human的原型吧 说白了Human = new Function(XXX) 然后就好理解了 我是这么认为的 具体的就不知道了
嗯 说的有点模糊 Human是一个function同时也是Function的一个实例 proto指的是他继承的原型链而不是本身的原型链 所以Human.proto = Function.prototype