从MDN docs中获取“新” 运算符:
如果构造函数未明确返回对象,则
而是使用在步骤1中创建的对象。 (通常,构造函数不会
返回一个值,但是如果他们想覆盖它们,他们可以选择这样做
正常的对象创建过程。)
因此,您将在返回中显式返回一个函数对象,该对象将覆盖由Car2
构造函数创建的对象的默认返回。
您要返回的函数对象中没有brand
属性,因此您得到undefined
,可以通过将brand
属性显式添加到返回的函数中来进行检查对象:
function Car2() {
this.brand = "Honda"
const func = function(){
console.log('TEST');
}
func.brand = "Toyota";
return func;
}
var car2 = new Car2()
console.log(car2.brand)
,
您正在返回一个函数,这就是原因。
var car2 = new Car2()
console.log(car2.brand) // undefined
car2() // TEST
But if you do car2(),you console.log ('TEST')
car2只是您返回的函数。
,
new
关键字用于根据构造函数创建对象。当new与构造函数一起使用时,构造函数会隐式返回this
上下文。
但是在第二个示例中,您从构造函数中显式返回了函数体,因此car2不包含Car2的实例,而是要返回的函数体。
返回的函数不包含品牌属性,因此值未定义。
本文链接:https://www.f2er.com/3168796.html