javascript - Object.create( parentObject{ nestedObject :{} } )

标签 javascript inheritance properties javascript-objects prototypal-inheritance

引用Sam Elsamman's post ,我想问一下您是否编写了一个函数来为 Object.create() 提供预期的行为?

var animal = {traits: {}};            // a nested object as parent
var lion = Object.create(animal);
var bird = Object.create(animal);
lion.traits.legs = 4;
bird.traits.legs = 2;

console.log(lion.traits.legs);        // 2

// edited following adiga's comment:`
animal.traits.hasOwnProperty("legs"); // true

我希望:

// edited following adiga's comment:
console.log(lion.traits.legs);        // 4
animal.traits.hasOwnProperty("legs"); // false

干杯

最佳答案

const create = (proto) => {
  const o = {}
  o.__proto__ = proto
  Object.keys(proto).forEach(key => {
    const val = proto[key]
    if (typeof val === 'object')
       o[key] = Object.assign({}, val)
    else
       o[key] = val
  })
  return o
}

关于javascript - Object.create( parentObject{ nestedObject :{} } ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59026886/

相关文章:

javascript - 当 cookie 文件超过最大大小时会发生什么?

c++ - (简单 C++ 概念)构造函数/析构函数调用的意外输出

python - 以对象表示的数据

c# - 防止属性(property)重新分配

javascript - Angular 2 JWT 单元测试

javascript - ie7 无法将具有不同 anchor (主题标签)的页面识别为 2 个不同的页面(因此历史记录不起作用)

javascript - 如何在jquery中创建显示/隐藏div的多个实例?

python - 扩展现有 3rd 方库的现有类的功能的最佳方法是什么?

c# - 在 C# 中通过引用传递属性

java - 如何修复 setProperty 中的奇怪顺序或放置 Properties 类