a = function() {}
a.prototype.b = 10
console.log(a.b)
我对原型继承的理解是,如果在对象本身中定义了属性,那么就定义了prop的值。
如果未在对象中定义属性,则它会查找原型链,我将其理解为a.prototype
下的查找并返回值。
在上述情况下,它打印undefined
,而我期待10
。
答案 0 :(得分:2)
var a = function() {};
a
是一个函数
a.prototype.b = 10;
a
的所有实例都以10的属性值.b
开头。
console.log(a.b) //undefined
a
不是a的实例,因此只有function(){}
没有属性b,因此记录未定义。
var A = new a();
console.log(A.b);//10;
现在我们有一个a的实例,结果记录了10个。
答案 1 :(得分:1)
你需要:
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
的原型链就可以了。
答案 2 :(得分:1)
只有类/对象/函数的实例从其console.log(a.b);
属性继承。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者您可以内联创建新实例。
console.log(new a().b);
//OR
console.log(a.prototype.b);
应该是:
switch ((cbxType.SelectedItem as ComboBoxItem).Value)
{
case "articles":
serializer.Deserialize<ArticlesClass>(response);
break;
case "topics":
serializer.Deserialize<TopicsClass>(response);
break;
}
更多关于prototypes (mdn)。