Class.method = function () { this.xx }
Class.prototype.method = function () { this.xx }
var clazz = new Class();
clazz.method();
当我在函数中调用第4行this
时会引用clazz
但是当执行Class.method()时,this
会引用什么?
答案 0 :(得分:1)
this
函数中的 Class.prototype.method
仍将引用Class
实例。这不是静态方法,静态(即每个类一个)方法类似于:
Class.method = function () {
// I am a static method
};
例如:
var Example = function () {
this.name = "DefaultName";
};
Example.prototype.setName = function (name) {
this.name = name;
}
var test = new Example();
test.setName("foo");
console.log(test.name); // "foo"
答案 1 :(得分:0)
如果您在构造函数本身上调用.method()
(没有new
),this
仍将绑定到Class
对象。 this
值总是取决于调用的类型,因为您从对象(=方法)中调用函数,this
将绑定到该上下文。
答案 2 :(得分:0)
Class = function() {
this.xx = "hello";
}
Class.method = function () { this.xx }
Class.prototype.method = function () { alert(this.xx) }
var clazz=new Class();
clazz.method(); // display "hello";
Class.method() // undefined
答案 3 :(得分:0)
它将引用调用Class.method
函数的对象。