Javascript 可以对非';不可写吗?

Javascript 可以对非';不可写吗?,javascript,prototype,Javascript,Prototype,今天在玩一些宠物项目的时候,我发现了一个我无法解释的怪癖。以下是节点repl的日志: > foo = Object.create({}, { toString: { value: function() { return 'bob' } } }) {} > bar = Object.create(foo) {} > bar.toString() 'bob' > bar.hasOwnProperty('toString') false > bar.toString =

今天在玩一些宠物项目的时候,我发现了一个我无法解释的怪癖。以下是节点repl的日志:

> foo = Object.create({}, { toString: { value: function() { return 'bob' } } })
{}
> bar = Object.create(foo)
{}
> bar.toString()
'bob'
> bar.hasOwnProperty('toString')
false
> bar.toString = function() { return 'nope' }
[Function]
> bar.toString()
'bob'
我期望
bar.toString
会对
foo.toString
造成阴影,但这似乎没有发生。在创建
foo
时,将
toString
属性设置为
writable:true
,可以使其按预期工作

无法写入的原型属性是否可以隐藏?

是的,您可以使用:

Object.defineProperty(条形图,“toString”{
可配置:true,//可选
可写:true,//可选
值:函数(){return'nope';}
});

clearity:需要注意的是,任何属性名称都是相同的,“toString 2”或“myProp”,而不仅仅是“toString”。这里的主要问题与这个问题相同:@Qantas94Heavy是对的,这个问题应该作为重复问题结束。谢谢你的链接!