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

来源:4-4 [JavaScript]get/set方法

无兄弟不编程

2015-06-28 17:29

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

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

写回答 关注

3回答

  • 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});


    无兄弟不编程

    非常感谢!

    2016-05-02 21:56:32

    共 1 条回复 >

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

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

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

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

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题