JavaScript面向对象--记录防忘记(一)

1、理解对象:

创建自定义对象最简单的方式就是创建一个object实例,再给他添加属性和方法。

let person = new Object();
person.name = 'zhangsan';
person.age = 25;
person.sayName = function (){alert(this.name)};
//=============================

以上实例现在可以这样写:

let person = {
    name:'zhangsan',
    age:25
    sayName:function(){
        alert(this.name);
    }
}

2、属性类型

  数据属性,访问器属性

Value:这个属性的属性值

let person = {};
Object.defineProperty(person,"name",{
    value:"ZhangSan"
});
let person = {};
Object.defineProperty(person,"age",{
    value:25
});

 

Configurbale:表示是否能通过Delete删除属性并重定义,能否修改属性的特性,这个属性的默认值是true;

let person = {};
Object.defineProperty(person,"name",{
    configurable:true,
    value:"ZhangSan"
});
Object.defineProperty(person,"age",{
    configurable:false,
    value:25
});
delete person.name;
delete person.age;
alert(person.name);//输出  undefined
alert(person.age);//输出  25

Object.defineProperty(person,"age",{ configurable:true,//抛出错误,configurable为false后无法重定义; value:25 });

 

Enumable:为false的时候无法for-in循环返回属性,当使用new Object创建实例的时候默认是false,直接定义为true;

Writable:是否可以修改属性的值,默认是true;

let person = {};
Object.defineProperty(person,"name",{
    writable:true,
    value:"ZhangSan"
});
Object.defineProperty(person,"age",{
    writable:false,
    value:25
});
person.name = 'lisi';
person.age = 33;
alert(person.name);//输出  lisi
alert(person.age);//输出  25

访问器属性不包含数值,它们包含一对getter和setter函数;

Get:Set:默认值都是undefined

let book = {
    edition: 1
};
Object.defineProperty(book, "_year", {
    get: function () {
        return this.year;
    },
    set: function (newValue) {
        if (newValue > 2004) {
            this.year = newValue;
            this.edition += newValue - 2004;
            console.log(newValue);
        }
    }
});
book.year = 2005;
alert(book.year);// 输出2005
alert(book.edition);// 输出2

在不支持Object.defineProperty()方法的浏览器中不能修改[Configurable],和[Enumerable]。

3、定义多个属性

let book = {};
Object.defienProperties(book,{
    year:{
        writable:true,
        value:2004
    }
    edition:{
        writable:true,
        value:1
    }
});

 

4、读取属性的特性

==

posted @ 2018-07-02 16:53  _Iniesta  阅读(205)  评论(1编辑  收藏  举报