一、理解对象
- 定义为一组属性的无序集合,
- 每一个属性或方法都是由一个名称来标识,这个名称映射到一个值,键值对形式
- 值可以是 数据 或 对象
1、创建对象
1.1、实例方式–创建对象
// 创建实例
var obj = new Object();
// obj对象添加 属性
obj.name = 'lhy';
obj.weight = 50;
// obj对象添加方法
obj.eat = function(){
console.log('lhy eated apple');
}
1.2、字面量形式 – 创建对象
var obj = {
// obj对象添加 属性
name : 'lhy',
weight : 50,
// obj对象添加方法
eat : function () {
console.log('lhy eated apple');
}
}
2、属性的类型
2.1、数据属性
数据属性包含:[[configurable]]、[[enumberable]]、[[writable]]、[[value]]
如何修改数据的默认属性?Object.defineProperty()方法,接收 3 个参数
- 参数1:要添加属性的对象
- 参数2:属性的名称
- 参数3:描述的对象
let person = {};
Object.defineProperty(person,"name",{
writable:false,
value:'Lhy'
});
2.2、 访问器属性
属性包含:[[configurable]]、[[enumberable]]、[[get]]、[[set]]
如何修改默认属性?Object.defineProperty()方法,接收 3 个参数
- 参数1:要添加属性的对象
- 参数2:属性的名称
- 参数3:描述的对象
var obj = {
// obj对象添加 属性
name : 'lhy',
weight_ : 50,//伪私有变量
// obj对象添加方法
eat : function () {
console.log('lhy eated apple');
}
};
Object.defineProperty(obj,"weight",{
get(){
return this.weight_;
},
set(newValue){
if(newValue > 50){
this.weight_ = 50;
}
}
});
obj.weight=100;
console.log('obj:',obj.weight); //50
注意、weight_有下划线,表示该属性为私有的