1知牌、“點”語法
// ECMAScript 3
// 設置屬性
obj.someKey = 'Hello World!';
// 獲取屬性
var val = obj.someKey;
2、中括號語法
// ECMAScript 3
// 設置屬性
obj['someKey'] = 'Hello World';
// 獲取屬性
var val = obj['someKey'];
3、Object.defineProperty
// ECMAScript 5
// 設置屬性
Object.defineProperty(obj, 'someKey', {
value: 'Hello World!',
writable: true,
enumerable: true,
configurable: true
})
// 當然软棺,我們可以重新封裝一個簡單的方法來實現(xiàn)
const defineProp = function(obj, key, value) {
const config = { value }
Object.defineProperty(obj, key, config)
}
// 使用上述的方法,我們需要先創(chuàng)建一個空的對象
const person = Object.create(null);
// 然后設置對象的各個屬性
defineProp(person, 'name', 'Johnny');
defineProp(person, 'age', 18);
defineProp(person, 'rich', true);
// 獲取屬性:可以用1和2中獲取屬性的方式來獲取屬性
這個方法可以用于實現(xiàn)繼承
// 1影涉、創(chuàng)建程序員對象programer冠绢,同時繼承person對象
const programer = Object.create(person);
// 2、為programer對象設置一個屬性
defineProp(programer, 'skill', 'javascript')
// 3常潮、獲取繼承自person的name屬性
console.log(programer.name);
// 4弟胀、獲取programer自身的skill屬性
console.log(programer.skill);
4、Object.defineProperties
// ECMAScript 5
// 設置屬性
Object.defineProperties(obj, {
'key1': {
value: 'Hello World',
writable: true
},
'key2': {
value: 'Hi, Johnny',
writable: false
}
});
// 獲取屬性:可以用1和2中獲取屬性的方式來獲取屬性