传统语言中,构造函数是没有返回值的。构造函数与普通函数的区别可以认为是:构造函数中没有return语句,普通函数可以return;构造函数中使用this定义成员变量和成员方法,普通函数中不使用this关键字定义成员变量和方法。然而在JavaScript中构造函数可以有返回值也可以没有。

没有返回值的情况像其他传统语言一样,返回实例化的对象

1
2
3
4
5
6
7
8
9
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"}

如果存在返回值则检查其返回值是否为引用类型,如果为非引用类型,如(string,number,boolean,null,undefined),上述几种类型的情况与没有返回值的情况相同,实际返回实例化的对象

1
2
3
4
5
6
7
8
9
10
11
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"}

如果存在返回值是引用类型,则实际返回该引用类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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"}