function foo(){}
foo.prototype;
//返回一个Object,里面有constructor:foo()和__proto__:Object
foo.__proto__;
//返回一个function(),里面有一些方法,也有__proto__:Object
想知道两者的联系和区别,看完其他问题之后觉得更糊涂了,觉得答案都统一不起来
function foo(){}
foo.prototype;
//返回一个Object,里面有constructor:foo()和__proto__:Object
foo.__proto__;
//返回一个function(),里面有一些方法,也有__proto__:Object
想知道两者的联系和区别,看完其他问题之后觉得更糊涂了,觉得答案都统一不起来
一个对象的prototype是指这个对象的创造者的原型,一个对象的__proto__是指这个对象的创造者。在js中一切皆对象。当你申明一个function时,它的创造者是Function,他的创造者Function的原型是Object.
1.foo.prototype; 这里的foo是一个构造函数Foo
2.foo.__proto__; 这里的foo是构造函数的一个实例 var foo = new Foo()
3.每一个构造函数的原型prototype,包含指向构造函数的指针constructor和指向原型的指针__proto__
简单来讲:
P.S. 事实上,这种问题可大可小,建议去看看“JS原型”相关的内容,推荐看红皮书《Javascript高级程序设计》
很好的一个提问,我让它成为一个面试题目
联系:同属于foo对象的属性
区别:指代不同
foo.prototype指向foo函数对象的prototype对象(自己的小兵),
foo.__proto___指向Function函数对象的prototype对象(创建者)
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
这张图如果看不懂的话,放大招:
https://www.zhihu.com/questio...