我对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
未知的错误(由于距离相关代码还很远,我现在无法回想起来)
答案 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 ++背景时会感到困惑)。