一、定义对象的基本格式:
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属性的对象