传统语言中,构造函数是没有返回值的。构造函数与普通函数的区别可以认为是:构造函数中没有return语句,普通函数可以return;构造函数中使用this定义成员变量和成员方法,普通函数中不使用this关键字定义成员变量和方法。然而在JavaScript中构造函数可以有返回值也可以没有。
1.没有返回值的情况像其他传统语言一样,返回实例化的对象:
function Person(){
this.name="monster1935";
this.age='24';
this.sex="male";
}
console.log(Person()); //undefined
console.log(new Person());//Person {name: "monster1935", age: "24", sex: "male"}
2.如果存在返回值则检查其返回值是否为引用类型,如果为非引用类型,如(string,number,boolean,null,undefined),上述几种类型的情况与没有返回值的情况相同,实际返回实例化的对象:
function Person(){
this.name="monster1935";
this.age='24';
this.sex="male";
return "monster1935";
}
console.log(Person()); //monster1935
console.log(new Person());//Person {name: "monster1935", age: "24", sex: "male"}
3.如果存在返回值是引用类型,则实际返回该引用类型:
function Person(){
this.name="monster1935";
this.age='24';
this.sex="male";
return {
name:'Object',
age:'12',
sex:'female'
}
}
console.log(Person()); //Object {name: "Object", age: "12", sex: "female"}
console.log(new Person());//Object {name: "Object", age: "12", sex: "female"}
原文:http://blog.csdn.net/a1247529789/article/details/51645951