使用 Object.defineProperties 定义属性

Define properties with Object.defineProperties

请帮助理解为什么 obj['prop'] = 'zzz'; 行不起作用,甚至在 "use strict"; 打开时显示错误,而在使用 Object.defineProperty(obj, 'prop', {value:'zzz'}); 时工作正常? (虽然 delete 工作得很好)

       //"use strict";

        var obj = Object.defineProperties({}, {
            prop: {
                value: 'aaa',
                writeable: true,
                enumerable: true,
                configurable: true
            }
        });

        console.log(obj.prop);
        obj['prop'] = 'zzz';
        //Object.defineProperty(obj, 'prop', {value:'zzz'});
        console.log(obj.prop);
        //delete obj.prop;
        //console.log(obj.prop);

writable,不是writeable(注意中间没有e)。

参见 MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties#Parameters