Skip to content

使用方法定义属性 ​

本节目标:理解“使用方法定义属性”的核心思路,并能把它用于实际开发或面试表达。 Object.defineProperty(),

Object.defineProperties()

访问器属性只能使用Object.defineProperty()来定义 var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, 'year', { get: function () { return this._year; }, set: function (newValue) { if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005; console.log(book.edition);//2 访问器属性的一个常见方式是设置一个属性的值从而导致其他属性发生变化。

定义多个属性Object.defineProperties()方法可以通过描述符一次定义多个属性。这个方法接收两个对象参数:第一个参数是要添加和修改其属性的对象,第二个参数一个对象,其中的每个属性与第一个参数对象中要添加或修改的属性一一对应。例如: var book = {}; Object.defineProperties(book, { _year: { value: 2004 }, edition: { value: 1 }, year: { get: function () { return this._year; }, set: function (newValue) { if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } } });

==由此可以联想到数据对象与== ==DOM== ==对象的== =="====双向绑定===="====。==
Object.defineProperty(user, 'name', {
    get: function () {
        return document.getElementById('foo').value;
    },
    set: function (newValue) {
        document.getElementById('foo').value = newValue;
    },
    configurable: true
});

本站总访问 — 次