发表于: 2017-04-28 00:57:17
1 1109
今天完成的事情:
任务4基础的页面跳转处理
明天计划的事情:
进行任务5
遇到的问题:
任务4,依然在数据存储状态的改变上出现了难道,不知道如何使用数组对象的方法,要传递的数据该如存储,暂时放弃任务4,
收获:
面向对象,
对象的数据属性:
Object.defineProperty() 接受三个参数,属性所在的对象,属性的名字,和一个描述符对象,,描述符对对象必要时,confirgurable(是否能通过delete删除属性),enumerable(是否能通过for..in循环返回属性),writable(是否能修改属性值),value (属性的值);前三者默认情况下都为true,value默认是undefined;
var person = {} ;
Object.defineProperty(person, "name", {
confrigurable: false;
value: "dagou"
});
console.log(person.name)//dagou;
delete person.name;
console.log(person.name)//dagou,
注意,一单设置了confrigurable:false,就不能再把他改成true,此时调用Obejct.definedProeryt()方法修改处writable以外的属性都会报错,
对象的访问器属性:
访问器属性必须使用Object.defineProperty()定义,
访问器属性有4个特性: configurable(是否能通过delete删除), enumerable(是否可通过for...in循环返回属性),set(写入属性时调用的函数,)get(读取属性调用的函数,),set和get的默认值是undefined;
var book = {
_year: 2004,
edition: 1
};
Obejct.defineProperty(book, "year", {
get: function() {
return this._year;
},
set: function(newValue) {
if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
});
book.year = 2005;
console.log(book,year)// 2;
定义多个属性: Object.defineProperties() . 接受两个参数,的哥一是对象是要添加和修改的属性对象,第二对象是属性与第一个对象中要添加或者修改的属性一一对应
读取属性的的方法: Object.getOwnProperyDescriptor();读取属性的方法Object.getOwnPropertyDescriptor(); 接受两个参数,属性所在的对象,和要读取其符合描述的属性名称; 返回值是一个对象,如何是访问器属性,这个对象有configurable, enumerable,get,set;
如果是数据属性,这个对象的属性有configurable, enumerable,writable,value
var descriptor = Object.getOwnProertyDescriptor(book, "_year");
console.log(descriptor.value)//2004;
console.log(descirptor.configurable)//false
评论