js面向对象
创建对象的方式
var obj = new Object()
obj.name = 'Fhup'
obj.age = 18
obj.run = function() { console.log(this.name, '在run') }
console.log(obj);
obj.run()
var xx = {
name: 'fh',
age: 18
}
console.log(xx);
defineProperty()的学习
var obj = {
name: 'Fhup',
age: 18
}
delete obj.name
Object.defineProperty(obj, 'height', {
value: 1.88,
enumerable: true
})
console.log(obj);
数据属性描述符
var obj = {
name: 'Fhup',
age: 18
}
Object.defineProperty(obj, 'address', {
value: '北京市',
configurable: false,
enumerable: true,
writable: true
})
存取属性描述符
var obj = {
name: 'Fhup',
age: 18,
_address: '北京市'
}
Object.defineProperty(obj, 'address', {
enumerable: true,
configurable: true,
set: function(value){
abc()
this._address = value
},
get(){
def()
return this._address
}
})
console.log(obj.address);
obj.address = '宝鸡市'
console.log(obj.address)
function abc(){
console.log('设置一次值');
}
function def(){
console.log('获取一次值');
}
定义多个属性描述符
var obj = {
_age: 3,
}
Object.defineProperties(obj, {
name: {
configurable: true,
enumerable: true,
writable: true,
value: 'Fhup'
},
age: {
configurable: false,
enumerable: false,
set: function(value) {
this._age = value
},
get: function(){
return this._age
}
}
})
console.log(obj);
console.log(obj.name);
obj.age = 18
console.log(obj.age);
console.log(Object.keys(obj));
获取属性描述符
var obj = {
_age: 3
}
Object.defineProperties(obj, {
name: {
configurable: true,
enumerable: true,
writable: true,
value: 'Fhup'
},
age: {
configurable: false,
enumerable: false,
set: function(value) {
this._age = value
},
get: function(){
return this._age
}
}
})
console.log(Object.getOwnPropertyDescriptor(obj, 'name'));
console.log(Object.getOwnPropertyDescriptor(obj, 'age'));
console.log(Object.getOwnPropertyDescriptors(obj));
Object的方法对对象属性进行限制
var obj = {
name: 'Fhup',
age: 18
}
Object.preventExtensions(obj)
obj.height = 1.88
console.log(obj);
Object.seal(obj)
delete obj.age
console.log(obj);
Object.freeze(obj)
obj.name = 'xxx'
console.log(obj.name);