本文主要介绍JavaScript对象直接量3种创建对象方式。
以下三种方式创建的对象,达到的效果等效。
方式一
var fun2 = function() {
return {
name: 'kancy',
play: function() {
alert(this.name);
},
address: {}
};
};
console.log(typeof fun2); //function
console.log(typeof fun2()); //object
console.log(typeof fun2().name); //string
//console.log(typeof fun2().name()); // 错误:"Uncaught TypeError: string is not a function"
console.log(typeof fun2().play); //function
console.log(typeof fun2().play()); //undefined,因为没有return
console.log(typeof fun2().address); //object
//console.log(typeof fun2().address()); // 错误:"Uncaught TypeError: object is not a function"
方式二
var fun4 = function() {
this.name= 'kancy';
this.play= function() {
alert(this.name);
},
this.address={
}
return this; //一定要加上return,否则和其他两种方式效果不同
};
console.log(typeof fun4); //function
console.log(typeof fun4()); //object
console.log(typeof fun4().name); //string
console.log(typeof fun4().play); //function
console.log(typeof fun4().play()); //undefined,因为没有return
console.log(typeof fun4().address); //object
var q1 = new fun4();
q1.name="q1";
console.log(q1.name);
q1.name="q2";
var q2 = new fun4();
console.log(q2.name);
方式三
var fun5 = function() {
var obj ={};
obj.name= 'kancy';
obj.play= function() {
alert(this.name);//等同于alert(obj.name);
},
obj.address={
}
return obj;
};
console.log(typeof fun5); //function
console.log(typeof fun5()); //object
console.log(typeof fun5().name); //string
console.log(typeof fun5().play); //function
console.log(typeof fun5().play()); //undefined,因为没有return
console.log(typeof fun5().address); //object