Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用TypeScript关闭JavaScript中的true private字段_Javascript_Closures_Typescript - Fatal编程技术网

使用TypeScript关闭JavaScript中的true private字段

使用TypeScript关闭JavaScript中的true private字段,javascript,closures,typescript,Javascript,Closures,Typescript,我正试图用TypeScript重写一个有用的JavaScript类。 在我的JavaScript类中,我使用闭包变量self实现私有字段。 它在事件处理程序中很有用,例如onkeypress,了解事件的调用者和类的当前实例很重要 var MyClass = function (valueHolder) { var self = this; this.valueHolder = valueHolder; MyClass.pr

我正试图用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中的self语法和JavaScript方式中的真正私有成员。

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

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

这将引用外部的this,TypeScript将在后台添加一个self-type变量。

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

MyClass.prototype.onclickForHolder = e => {
    var value = $(e.target).val(); //value from attached input
    this.DoUsefullactions(value);
}
这将引用外部类型,而TypeScript将在后台添加一个自类型变量。

试试看

 MyClass.prototype.onclickForHolder =(ev:Event) =>this.DoUsefullactions(this,ev);
试一试


在构造函数中为原型分配属性不好。它会在每次构造函数调用中分配这个。谢谢,这只是一个例子,在构造函数函数中为原型分配属性是不好的。它会在每次调用构造函数时分配这个。谢谢,这只是个例子谢谢,我知道这个版本是用来解决问题的,我假设在这种情况下存在抽象的解决方案在类型脚本中谢谢,我知道这个版本是用来解决问题的,我假设在这种情况下存在抽象的解决方案,如果你能解释他为什么要尝试那样做,我将不胜感激。如果你能解释他为什么要尝试那样做,我将不胜感激。