【发布时间】:2015-09-29 04:38:29
【问题描述】:
据我所知,函数应该从其prototype 对象继承属性,可以使用.prototype 或__proto__ 属性访问。
//my prototype Object
var myObj = {
a: 1,
b: 2
};
var myFunc = function () {};
// setting function's `prototype` property
myFunc.prototype = myObj;
alert(myFunc.a);
//returns undefined (Why???) I was expecting 1
但是当我尝试以下方法时,
//setting function __proto__ property
myFunc.__proto__ = myObj;
//returns 1
alert(myFunc.a);
那么为什么当我设置myFunc.__proto__ 时它会起作用,而当我设置myFunc.prototype 时它不起作用?
我确实参考了__proto__ VS. prototype in JavaScript,但无法弄清楚。
【问题讨论】:
-
es5.github.io 对
__proto__一无所知。这意味着它不是标准的一部分,你不应该使用它。 -
不,对象的原型(继承它的对象)不是
.prototype。您是否阅读了stackoverflow.com/questions/9959727/… 的所有答案?您有什么不明白的地方(我们很乐意对其进行改进)? -
那么 .prototype 是干什么用的??
-
@Flake: On constructor functions
-
所以这意味着'.prototype'被用作该函数构造的对象的原型,但它与该函数自己的原型无关
标签: javascript function inheritance prototype