javascript从成员函数内部调用成员函数

时间:2017-02-21 08:18:00

标签: javascript ecmascript-6

我对javascript很新,并且将一些(非常旧的)代码转换为更现代化和重构的代码,我最终得到了类似的东西

var MyClass = function(parms} {/*stuff*/} 
MyClass.prototype = {
    this_func(p1, p2) { /* do this */ },
    that_func(args) { /* do that */ }
};

请注意,我没有可用的ES6 class关键字,但我想尽快使用它。

当我想从this_func内部呼叫that_func并且我设法最终导致这种扭曲时出现问题

that_func(args) {
    //this.this_func(parm1, parm2) causes an error
    myClass.prototype.this_func.call(this, parm1, parm2);
}

有更简单的方法吗?当我获得完整的es6时,我能够使用this.this_func吗?

我已经查看了这个网站上现有的问题,但这些问题似乎都没有覆盖我正在做的事情(或者至少不是我可以映射到我的问题的方式)

澄清 - 这个类就像这样使用

var myInstance = new MyClass();
myInstance.that_func('xxx');

我收到一条关于this_func未知的错误(由于距离相关代码还很远,我现在无法回想起来)

2 个答案:

答案 0 :(得分:0)

this指当前实例。如果使用new MyClass(...)正确实例化了类,则会自动设置原型链,这是prototype对象的目的。

应该是

MyClass.prototype = {
    this_func(p1, p2) {...},
    that_func(args) {
        this.this_func(...);
    }
};

如果您没有提供ES6类关键字',可以使用Babel将ES6代码转换为ES5。这就是它的用途。

答案 1 :(得分:0)

好吧,经过多次添加跟踪和日志记录后我发现了它。今天我发现,如果你在另一个函数中有一个函数,this值会在内部函数内部发生变化,所以它不属于'类'在某种意义上的实例(来自C ++背景时会感到困惑)。