在原型方法中使用它的最佳方法是什么

What is the best way to use this in prototype method

本文关键字:方法 最佳 是什么 原型      更新时间:2023-09-26

创建self =这个变量很舒服。在所有方法中,我们总是可以使用self,并且不必担心方法上下文 - 有时在方法中不是我们预期的。但是在原型方法中,我们不能使用此提示;

看一下这个例子(jQuery需要jQuery来显示问题)

var myClass = function () {
    this.propery = 'someData';
    var self = this;
    this.method = function () {
        console.log(self.propery);
    }
}
myClass.prototype.method2 = function () {
    // want to use self here
    console.log(this);
}

var my = new myClass();
var eventBus = $({});
eventBus.bind('onMyEvent', my.method);
eventBus.bind('onMyEvent', my.method2);
eventBus.trigger('onMyEvent');

声明可以在原型方法中使用 self 的类的最佳方法是什么?

不需要

self,只需要通过将对象绑定到函数来设置this的值:

var MyClass = function () {
  this.property = 'someData';
  this.method = function () {
    console.log(this.property);
  };
};
MyClass.prototype.method2 = function () {
  console.log(this);
};
var my = new MyClass();
var eventBus = $({});
eventBus.bind('onMyEvent', my.method.bind(my)); // bind
eventBus.bind('onMyEvent', my.method2.bind(my)); // bind
eventBus.trigger('onMyEvent');