javascript - javascript中实例的__proto__与其构造函数的原型(prototype)之间的关系

标签 javascript prototype

我编写了代码来为我找出实例的 __proto__ 与其构造函数的原型(prototype)之间的关系:

// Constructor
var Guy = function( name ) {
       this.name = name;
};

// Prototype
var chinese = {
        region: "china",
        myNameIs: function() {
            return this.name;
        }
};

Guy.prototype = chinese;

var he = new Guy( "Wang" );
var me = new Guy( "Do" );

当我测试 me.__proto__ 是否等于 chinese 时,我得到了 false:

console.log( "__proto__ of me is chinese? " + chinese == me.__proto__ ); // logs false

为什么它们不是同一件事?

最佳答案

因为 + 的优先级高于 ==,所以你真的在做...

( "__proto__ of me is chinese? " + chinese ) == me.__proto__

你需要做的是......

"__proto__ of me is chinese? " + ( chinese == me.__proto__ )

或在控制台调用中使用,来传递单独的参数...

"__proto__ of me is chinese? ", chinese == me.__proto__ 

关于javascript - javascript中实例的__proto__与其构造函数的原型(prototype)之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081699/

相关文章:

javascript - 将 browser.element 放入带有子项的页面对象中

javascript - 滚动事件不会传播到父级

javascript - 将当前网页复制到新窗口

javascript - ReactJs - 创建动态列表

javascript - 更改 JavaScript 原型(prototype)上的函数

javascript - 使用原型(prototype)扩展 Javascript Form 对象

javascript - Alfresco 范围的 webscript 配置,它可以加载到 E4X 对象中吗?

javascript - Antd表: How to render table with object in list

javascript - 为什么 Chrome 会将引用类型为 Date 的对象的原型(prototype)视为 "Object {}",而不是 "Date {}"?

javascript - 如何在一个 javascript 文件中拥有多个 document.observe(dom :loaded . ..) 函数? (原型(prototype))