将原型函数存储在变量中

时间:2016-05-27 00:52:01

标签: javascript prototype

我的问题非常直截了当,但我无法在任何地方找到答案(也许我的搜索术语不正确,但这里也是如此)......

为什么我可以执行以下操作:

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

我认为这是为了存储对原始函数的引用?

1 个答案:

答案 0 :(得分:1)

如果您执行func.apply(Class)它会起作用,因为您告诉它使用Class的上下文。执行作业时,函数正文的上下文为window,这就是您查看undefined的原因