首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.prototype和[[原型]]。为什么.prototype是一个空对象?

.prototype和[[原型]]。为什么.prototype是一个空对象?
EN

Stack Overflow用户
提问于 2016-03-23 06:40:40
回答 1查看 154关注 0票数 1

尽管我阅读了大多数关于StackOverflow的文章,但实际上我现在对原型感到非常困惑。

代码语言:javascript
复制
function Foo() {

}

Foo.prototype.speak = function() {
    console.log('Foo');
};

function Bar() {

}

console.log(Bar.prototype); // {}

Bar.prototype = Object.create(Foo.prototype);

console.log(Bar.prototype); // {} ----- (1)

Bar.prototype.speak = function() {  // ----------(2)
    console.log('Bar');
};   

console.log(Bar.prototype); // { speak: [Function] }  ----- (3)

问题:

1)为什么(1)Object.create之后的空对象。它不应该从speak methodFoo转一个带有Foo的对象吗?

( 2)我在(2)上到底在改变什么?Bar对象还是prototype对象?到底发生了什么?

( 3)发生在(3)上的事情。

4) [原型]如何参与所有这一切?我所知道的是,如果当前对象不包含属性,则使用[prototype]查找ups。

我敢肯定,.prototype !== [[prototype]]但是[[prototype]] === __proto__

对不起,如果这是一个副本。因为尽管有许多类似的问题,但我似乎无法回答这些问题。

EN

回答 1

Stack Overflow用户

发布于 2016-03-23 08:22:15

您不能通过简单地分配函数/对象来更改它的原型。您需要在创建对象时设置它,或者使用ES6特性来更改它。

所以,Bar.prototype = Object.create(Foo.prototype);没有任何意义。

[[prototype]]是对象的真实原型的内部表示。

也许您应该根据这些基本原理重新安排您的测试用例,并寻求解释。

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

https://stackoverflow.com/questions/36171366

复制
相关文章

相似问题

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