JS中构造函数的返回值

599 阅读1分钟

构造函数是用来构造类的,然后类产生对象。这个是JS这门语言和Java,python的这类面向对象语言的区别。

我们首先来看,构造函数的返回值,如果是一个对象或者数组。他会返回什么回来。

 function Person(name,age){
    this.name = name;
    this.age = age;
    return{
        name:"我是人"
    }
}
var p1 = new Person("张三",18);
console.log(p1) //{name: '我是人'}

如果你return的是一个对象或者数据,他会显示的返回这个对象或者数组。

如果返回的是一个字符串,数值类型,布尔类型,null,undefined,不影响他返回回来的值。如果是包装类,或者对象的类型就会影响他的返回值。

 function Person(name,age){
    this.name = name;
    this.age = age;
    return "我是人"
}
var p1 = new Person("张三",18);
console.log(p1)//Person {name: '张三', age: 18}

如果你返回的是this呢?因为这个new关键字返回的,所以他内部本来就会返回一个this。你返回this,也是返回你new的值。

结论:如果构造器不显示地返回任何数据,或者返回一个非对象类型的数据,就不会造成上述问题。