使用Object.defineProperty一个构造函数的prototype出现的奇怪的问题?

有一天我在看MDN上对defineProperty的时候,有一段没看明白,所以就在浏览器上跑了一段这样的代码做调试

var Foo = function(){};Object.defineProperty(Foo.prototype,"x",{    get(){        return 3;
    }
});var foo = new Foo();console.dir(foo);

我期待的结果应该是

Foo {    __proto__:{
        constructor: ƒ (),
        x: 3,
        __proto__: Object
    }
}

但是真正的结果是

Foo {
    x: 3,
    __proto__:{
        constructor: ƒ (),
        x: 3,
        __proto__: Object
    }}

为什么在最外层就已经出现了x属性呢?求大神和老师解惑


陪伴而非守候
浏览 475回答 1
1回答

动漫人物

谷歌试了跟你的结果一样,然后测试了下console.dir(foo.hasOwnProperty('x'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript