var dom = function(params, context) {
return new GetOrMakeDom(params, context);
};

代码中的return语句是否返回匿名对象?如果是这样的话,"这个" object是唯一有引用它的对象吗?如果没有,还有谁参考了它?
function OuterFunction()
{
return new newFunction();
};
function newFunction()
{
if(this === undefined)
{
console.log("this is equal to the global window object");
}else
{
console.log("this is not equal to the global window object");
}
};
OuterFunction();

答案 0 :(得分:1)
我认为你在这里有些困惑。你得到奇怪的结果,因为你奇怪地使用new
运算符。通常它用在构造函数上 - 但是,你的函数并没有像构造函数那样为自己定义任何属性,因此当它返回newFunction
“构造函数”的实例时,实例就是一个空的对象。
function OuterFunction() {
return new newFunction();
};
function newFunction() {
if (this === window) {
console.log("this is equal to the global window object");
} else {
console.log("this is not equal to the global window object");
}
};
const test = OuterFunction();
console.log(test);
new
运算符导致函数作为构造函数被调用,而this
被绑定到新创建的实例。如果您要省略new
运算符:
function OuterFunction() {
return newFunction();
};
function newFunction() {
if (this === window) {
console.log("this is equal to the global window object");
} else {
console.log("this is not equal to the global window object");
}
};
const test = OuterFunction();
console.log(test);
您看到this
在此实例中引用window
,undefined
是返回。
另外,我相信你有一些不正确的术语 - “匿名对象”实际上不是我听过的术语。您可能会将此与“匿名函数”混淆,后者是一个没有名称的函数。