我的问题非常直截了当,但我无法在任何地方找到答案(也许我的搜索术语不正确,但这里也是如此)......
为什么我可以执行以下操作:
var _Class = function(){
this.output = "Hello";
}
var Class = new _Class();
Class.Talk = function(){
console.log(this.output);
}
Class.Talk(); // outputs "Hello"
而且:
var func = function(){
console.log(Class.output);
}
func(); // outputs "Hello"
但我无法做到:
var _Class = function(){
this.output = "Hello";
}
var Class = new _Class();
Class.Talk = function(){
console.log(this.output);
}
var func = Class.Talk;
func(); // undefined
我认为这是为了存储对原始函数的引用?
答案 0 :(得分:1)
如果您执行func.apply(Class)
它会起作用,因为您告诉它使用Class
的上下文。执行作业时,函数正文的上下文为window
,这就是您查看undefined
的原因