首页 > 解决方案 > 使用名为 __proto__ 的键在对象中创建属性的尴尬

问题描述

我正在查看这段代码并将其复制到 Chrome 的控制台中。

let __proto__ = {color: "red"};
let o1 = {__proto__};

const newO1 = Object.create(o1);

  1. 我了解let o1 = {__proto__};使用“速记属性名称”技术。

当我登录时,o1我期望:

{
__proto__: {//data property
  color: "red",
  __proto__: Object.prototype //the accessor object
  }
}

我得到的是: 在此处输入图像描述


  1. 登录时new01,我期望:
{
__proto__: 
  __proto__: {color: "red"},
  __proto__: Object.prototype
}

我得到: 在此处输入图像描述

当我们制作自己的财产时,我很困惑发生了什么__proto__

标签: javascript

解决方案


我认为您正在寻找以下内容:

const o1 = {};
Object.defineProperty(o1, 'color', {
  get: () => 'red',
});
const newo1 = Object.create(o1);
console.log(newo1.color);


推荐阅读