一、定义对象的基本格式:
var hero = {
breed: ‘Turtle’,
occupation: ’Ninja’,
talk: function(){
alert(“A!!”);
}
author: {
firstname: ‘Martin’,
lastname: ‘Lu’
}
}
属性名加不加引号都可以,但是当属性名有保留字或特殊字符(空格等)时,需要加引号
二、对对象属性的操作
可以随时为对象添加/删除属性或者方法:
var hero = {};
hero.breed = ‘turtle’;
hero.name = ‘Alice’;
hero.sayName = function(){ return hero.name; }
在一个对象中,this指向的就是这个对象,比如如下调用方法:
var hero = {
name: ‘Martin’,
sayName: function(){
return this.name;
}
}
hero.sayName();
三、使用构造器函数来创建对象
可以在创建对象时接受一些参数,使用new关键字创建对象
function Hero(name){
this.name = name;
this.occupation = ‘Ninja’;
this.whoAreYou = function(){
return “I am” + this.name +this.occupation;
}
}
var hero = new Hero(‘Martin’);
四、构造器属性
创建一个对象时,该对象都会自动生成构造器属性,它指向用于创建该对象的构造器函数的引用。
比如hero.constructor,返回的就是Hero(name)
可以利用该属性创建另一个新对象,示例如下:
var hero1 = new hero.constructor(‘Martin’);
注意上面的代码中即使hero对象之前没有被创建,也可以用它以这种方法创建新对象
如果对象是通过文本标识法创建的,则是由内建函数构造器Object()创建的,如下:
var o = {};
o.constructor;
>>>Object()
typeof o.constructor;
>>>”function”
五、使用返回对象的函数创建对象
可以使用返回对象的函数创建对象:
function factory(name){
return {
name: name;
}
}
var o = factory(“Martin”);
o.name; //返回Martin
o.constructot; //返回Object()
这种返回对象的函数用new来创建对象时会发生问题:new创建出来的(由构造器返回的)对象不再是factory对象而是其中包含name属性的对象