我已经进行了一些测试,并且想知道为什么new TestOne()
会求出该函数的新实例,而new TestThree()
会求出返回值。
看来,这取决于返回对象还是原始类型。我希望new TestThree()
的评估结果为TestThree {}
(它的一个实例)。由TestThree
创建的new
实例会发生什么情况?
这背后的规则是什么?为什么?
function TestOne() {
return 123;
}
new TestOne(); // TestOne {}
TestOne(); // 123
function TestTwo() {
}
new TestTwo(); // TestTwo {}
TestTwo(); // undefined
function TestThree() {
return new TestOne();
}
new TestThree(); // TestOne {}
TestThree(); // TestOne {}