a = function() {}
a.prototype.b = 10
console.log(a.b)
我对原型继承的理解是,如果属性是在对象本身中定义的,那么就定义了该支柱的值。
如果该属性未在对象中定义,那么它将查找原型链,我将其理解为在a.prototype
下查找并返回值。
在上面的例子中,它打印undefined
,而我期望10
。
发布于 2015-11-19 17:04:54
你需要:
console.log(new a().b);
a
是一个函数(它也是一个对象) self,而原型链用于构造函数a
初始化的实例。
另一个例子是:
a = function() {};
Function.prototype.b = 10;
console.log(a.b); // this time you will get 10
a
是一个函数,它也是一个对象,您可以向Function.prototype
添加一个属性,然后a
的原型链就可以工作了。
发布于 2015-11-19 17:10:24
var a = function() {};
a
是一个函数
a.prototype.b = 10;
a
的所有实例都以属性值.b
10开头。
console.log(a.b) //undefined
a
不是a的实例,因此只有function(){}
没有属性b,因此日志没有定义。
var A = new a();
console.log(A.b);//10;
现在我们有了一个a的实例,结果是10被记录下来。
发布于 2015-11-19 17:12:15
只有类/对象/函数的实例从它们的prototype
属性继承。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者可以内联地创建一个新实例。
console.log(a.b);
应:
console.log(new a().b);
//OR
console.log(a.prototype.b);
更多关于原型(mdn)的报道。
https://stackoverflow.com/questions/33817263
复制