var a = {}; Object.defineProperty(a,'x',{value:1}); var b = Object.create(a); b.x=100; console.log(b.x); //得到的还是1
而改为
Object.defineProperty(a,'x',{value:1,writable:true}); b.x=100; console.log(b.x); //得到的是100
为什么修改原型链上的同名属性的配置 会影响到对象本身?
Object.defineProperty(a,'x',{value:1});
因为这样定义的a的x属性是不可写的(writable:false),所以无法修改。可以将其改为以下代码,其值已被修改为100了:
Object.defineProperty(a, 'x',
{value : 100, configurable: true});
应该是新js规范(ECMAScript 5)上扩展的对象
writable是属性标签,并且使用defineProperty定义对象时,默认值为false