1

我正在尝试用 TypeScript 重写我的一个有用的 JavaScript 类。在我的 JavaScript 类中,我使用闭包变量 self 来实现私有字段。它在事件处理程序中很有用,例如onkeypress,了解事件的调用者和我的类的当前实例很重要。

var MyClass = function (valueHolder) {
            var self = this;
            this.valueHolder = valueHolder;

            MyClass.prototype.DoUsefullactions = function (value) {
                alert(value);
            }

            MyClass.prototype.onclickForHolder = function (e) {
                var value = $(this).val(); //value from attached input
                self.DoUsefullactions(value);
            }

            MyClass.prototype.GetSelf = function () {
                return self;
            }

            this.valueHolder.onclick = this.onclickForHolder;
        }

我找不到如何在没有 TypeScript 语法的情况下使类的所有方法都可用的闭包变量,this.self并以 JavaScript 方式创建真正的私有成员。

4

2 回答 2

3

有一个替代的函数语法。只需使用:

MyClass.prototype.onclickForHolder = e => {
    var value = $(e.target).val(); //value from attached input
    this.DoUsefullactions(value);
}

this将引用外部this,TypeScript 将在幕后添加一个自类型变量。

于 2012-10-17T13:06:39.073 回答
1

尝试

 MyClass.prototype.onclickForHolder =(ev:Event) =>this.DoUsefullactions(this,ev);
于 2012-10-26T16:36:18.393 回答