prototype 这个属性, 称之为原型属性, 或者显示原型
proto 这个属性, 称之为原型对象, 或者隐式原型
这个说法对吗?
没必要区分什么显式,隐式,只要记住,__proto__
是每个对象都拥有的,但一般代码中不用,prototype
只有函数对象拥有,代码中用的多。
另外,不管是prototype
还是__proto__
本身都是对象(null暂不考虑),“原型属性”“原型对象”的称呼反而容易产生误解。
我是这样理解的:
prototype属性,当这个JS对象是函数对象时才有prototype属性。
它指向该JS对象的原型对象。(这时,这个JS对象就是构造函数)
__proto__属性,每个JS对象都有__proto__属性。
它指向该JS对象的构造函数的原型对象。即:
p.__proto__ == P.prototype
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
我觉得你可能说的是构造器原型
Object.prototype
和内部原型Object.prototype.__proto__
。一个 Object 的
__proto__
属性和自己的内部属性[[Prototype]]
指向一个相同的值 (通常称这个值为原型)。[[Prototype]]
通常是我们所说的原型链,或者说Object.prototype
属性表示对象Object
的原型对象。可以 参考这里