首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Prototype继承- prototype属性中的访问支持

Prototype继承- prototype属性中的访问支持
EN

Stack Overflow用户
提问于 2015-11-20 01:03:12
回答 3查看 95关注 0票数 1
代码语言:javascript
运行
复制
a = function() {}
a.prototype.b = 10
console.log(a.b)

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

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

在上面的例子中,它打印undefined,而我期望10

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-20 01:04:54

你需要:

代码语言:javascript
运行
复制
console.log(new a().b);

a是一个函数(它也是一个对象) self,而原型链用于构造函数a初始化的实例。

另一个例子是:

代码语言:javascript
运行
复制
a = function() {};
Function.prototype.b = 10;
console.log(a.b); // this time you will get 10

a是一个函数,它也是一个对象,您可以向Function.prototype添加一个属性,然后a的原型链就可以工作了。

票数 1
EN

Stack Overflow用户

发布于 2015-11-20 01:10:24

代码语言:javascript
运行
复制
var a = function() {};

a是一个函数

代码语言:javascript
运行
复制
a.prototype.b = 10;

a的所有实例都以属性值.b 10开头。

代码语言:javascript
运行
复制
console.log(a.b) //undefined

a不是a的实例,因此只有function(){}没有属性b,因此日志没有定义。

代码语言:javascript
运行
复制
var A = new a();
console.log(A.b);//10;

现在我们有了一个a的实例,结果是10被记录下来。

票数 2
EN

Stack Overflow用户

发布于 2015-11-20 01:12:15

只有类/对象/函数的实例从它们的prototype属性继承。要访问函数原型中的属性,可以使用functionName.prototype.propertyname。或者可以内联地创建一个新实例。

代码语言:javascript
运行
复制
console.log(a.b);

应:

代码语言:javascript
运行
复制
console.log(new a().b);
//OR
console.log(a.prototype.b);

更多关于原型(mdn)的报道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33817263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档