问答详情
源自:4-4 [JavaScript]get/set方法

对象原型链上的同名属性的writable为什么会影响到 对象本身的属性呢?

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

为什么修改原型链上的同名属性的配置 会影响到对象本身?

提问者:无兄弟不编程 2015-06-28 17:29

个回答

  • Down_Up
    2016-04-25 20:12:09
    已采纳

    Object.defineProperty(a,'x',{value:1});

    因为这样定义的a的x属性是不可写的(writable:false),所以无法修改。可以将其改为以下代码,其值已被修改为100了:

    Object.defineProperty(a, 'x', 

    {value : 100, configurable: true});


  • 慕慕9986984
    2015-12-20 13:08:51

    应该是新js规范(ECMAScript 5)上扩展的对象

  • 慕慕9986984
    2015-12-20 11:54:08

    writable是属性标签,并且使用defineProperty定义对象时,默认值为false