首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接原型和原型继承

链接原型和原型继承
EN

Stack Overflow用户
提问于 2016-05-28 02:42:37
回答 1查看 34关注 0票数 0
代码语言:javascript
复制
function Person(name){
    this.name=name
}
var julia=new Person("Julia");

Person.prototype.sayName=function(){
return "Hello, dear "+ this.name;
}

function Other(name){
this.name=name;
}

var mike=new Other("Mike");

Other.prototype=Object.create(Person.prototype);
mike.sayName();

当我调用mike.sayName ()时,它不工作,并且我得到mike.sayName不是一个函数。我不明白为什么?通过使用Object.create,我让Other.prototype继承了具有sayName方法的Person原型。现在,为什么我不能运行mike.sayName();

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 02:45:20

构造函数的prototype属性之所以特殊,是因为它在创建实例时用作[Prototype]值。然而,用另一个对象替换prototype只会影响更改后创建的实例,它不会神奇地更新现有实例的[原型]。

代码语言:javascript
复制
var oldproto = Other.prototype;
var mike = new Other("Mike");
Object.getPrototypeOf(mike); // oldproto
Other.prototype = Object.create(Person.prototype);
Object.getPrototypeOf(mike); // oldproto

因此,只需交换顺序:

代码语言:javascript
复制
Other.prototype = Object.create(Person.prototype);
var mike = new Other("Mike");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37490359

复制
相关文章

相似问题

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