原型继承 - 在prototype属性中访问props

时间:2015-11-20 01:03:13

标签: javascript prototypal-inheritance

a = function() {}
a.prototype.b = 10
console.log(a.b)

我对原型继承的理解是,如果在对象本身中定义了属性,那么就定义了prop的值。

如果未在对象中定义属性,则它会查找原型链,我将其理解为a.prototype下的查找并返回值。

在上述情况下,它打印undefined,而我期待10

3 个答案:

答案 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)