对象
对象是基础的变量类型
var obj = {}
把一张桌子看作对象,他有四条腿一个桌面。
人也可以抽象成一个对象:
var mrDeng = {
name : "MrDeng",
age : 30,
sex : "male",
health: 100,
smoke : function(){
console.log("I am smoking! cool!!!");
mrDeng.health --;
},
drink : function(){
console.log("I am drink");
mrDeng.health ++;
}
}
属性名可以是各类的变量,属性值可以是各种的数据类型。
属性值是个函数的话,咱们管这种属性值叫方法。
控制台可以直接读写对象的属性,读写时需要加上对象的"名字.属性"。
所以调用 smoke 方法,也可以操作对象的属性。
就像人可以用第一人称“我”指代自己一样,对象也可以使用“this”来指代对象本身。
修改一下这个对象里的方法:
smoke : function(){
console.log("I am smoking! cool!!!");
this.health --; // this 指代对象本身
}
操作属性
在控制台操作属性更直观一些。
属性的增加:就直接“对象.XX = xx”,就可以了。
属性的查看:基本操作,在代码里和控制台里都可以。
console.log(mrDeng.age); // 30
属性的修改:在已有属性上修改。
属性的删除:借助delete操作符来删除。
注意:当一个变量没有声明,引用的时候会报错,在这里删除一个对象属性,再引用的时候返回的是“undefined”。
示例:
创建一个人的对象,有些基本属性和方法
var deng = {
name: "laodeng",
sex: "male",
prepareWife: "xiaowang",
gf: "xiaoliu",
wife: "",
divorce: function () { // 离婚
delete this.wife;
this.gf = this.prepareWife;
},
getMarried: function () { // 结婚
this.wife = this.gf;
},
changePrepareWife: function (someone) { // 更换
this.prepareWife = someone;
}
}
先执行结婚方法:deng.wife 的值由“” 变为"xiaoliu"。
再执行离婚方法:deng.wife 的值被删除, deng.gf 的值更新。
再执行结婚方法:deng.wife 被赋值为新值,值由 deng.gf 而来
重换个预备人选:这个方法传参进来,deng.prepareWife 有了新值。
再执行离婚方法:deng.wife 的值又被清空。
再执行结婚方法:deng.wife 被赋新值。
执行完这么一圈,再查看 deng 对象信息:
示例来说明对象方法的使用和对属性的增删改查。
对象的创建方法
第一种方法是:plain object 对象字面量/对象直接量
var obj = {}
第二种方法是:构造函数