//Object.defineProperty(obj,prop,descriptor) 意思是定义属性:有三个参数
//descriptor属性描述符,也可以为configure意思配置对象 三个属性的定义内容:obj对象本身, prop为对象属性,descriptor对象属性值
//defineProperty 定义单个对象
function defineProperty(){
var _obj={};
Object.defineProperty(_obj,"a",{
value:222
})
return _obj;
}
var obj=defineProperty();
console.log(obj);
//defineProperties 定义多个对象
//defineProperties或definprorerty 对象参数里面属性描述符,里面writable可写可修改的意思,默认值false不可修改
//enumerable意思是可枚举 ,可以遍历的意思,其默认属性值false不可遍历
//configurable意思是可操作,可以删除该属性和值,其默认属性值false不可删除
//defineProperties里面定义对象的属性,属性1:value,属性2:writable,属性3:enumerable
function defineProperties(){
var _obj={};
Object.defineProperties(_obj,{
name:{
value:"张三",
writable:true
},
sex:{
value:"男"
}
})
return _obj;
}
var objDefin=defineProperties();
objDefin.name="上古";
objDefin.sex="女";
//name属性值修改成功,因为writable是true可修改的,sex值修改失败因为writable默认是false,不可修改
console.log(objDefin);
//defineProperties里面的get方法尝试,和set方法尝试
function defineProperties(){
var _obj={};
var name="徐凯";
Object.defineProperties(_obj,{
name:{
get(){
return name;
},
set(newVal){
//newVal值新赋的值
//name旧值name是get里面的值
name=newVal
console.log("新赋值内容"+newVal);
return name;
}
},
sex:{
value:"男"
}
})
return _obj;
}
var objDefin=defineProperties();
//get方法取值,取值取的事get里面的值,执行的是get方法
console.log(objDefin.name);
objDefin.name="上古";
//set方法赋值取值,取值取的事set里面的值,执行的是set方法
console.log(objDefin.name);
如再次来看时疑惑时可以直接复制,在ide里面跑一边!