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
})
// 当然,我们可以重新封装一个简单的方法来实现
const defineProp = function(obj, key, value) {
const config = { value }
Object.defineProperty(obj, key, config)
}
// 使用上述的方法,我们需要先创建一个空的对象
const person = Object.create(null);
// 然后设置对象的各个属性
defineProp(person, 'name', 'Johnny');
defineProp(person, 'age', 18);
defineProp(person, 'rich', true);
// 获取属性:可以用1和2中获取属性的方式来获取属性
这个方法可以用于实现继承
// 1、创建程序员对象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中获取属性的方式来获取属性