makeWorker
是一种多余这里如果a()
被称为无this
无论如何,让我们用它做什么代替调用makeWorker
:
function a() {
this.ename = "Pete";
var work = function() {
console.log(this);
console.log(this.ename);
};
work();
}
var ename = "John";
a();
,代之以调用work
它做什么:
function a() {
this.ename = "Pete";
console.log(this);
console.log(this.ename);
}
var ename = "John";
a();
and replac E中的呼叫a
用它做什么,再假设this
是全局对象:
var ename = "John";
this.ename = "Pete";
console.log(this);
console.log(this.ename);
所以您将全局ename
到"John"
,然后将其设置为"Pete"
,然后打印出来,其结果是"Pete"
。没有什么奇怪的。它可以帮助你时,每项任务在原来的代码恰好记录了一句:
function a() {
function makeWorker() {
console.log("Setting ename to Pete");
this.ename = "Pete";
return function() {
console.log(this.ename);
};
}
var work = makeWorker();
work();
}
console.log("Setting ename to John");
var ename = "John";
a();
@MiHawk:这里的升降机在哪里起作用? – Ryan