我是javascript的新手,会将一些(非常旧的)代码转换成更现代的代码,还会进行重构,最后得到的结果如下所示
var MyClass = function(parms} {/*stuff*/}
MyClass.prototype = {
this_func(p1, p2) { /* do this */ },
that_func(args) { /* do that */ }
};注意,我没有可用的ES6 class关键字,但我想在它可用时立即使用它。
当我想要从that_func内部调用this_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未知的错误(我现在想不起来了,因为现在离有问题的代码还有很长的路要走)
发布于 2017-02-21 18:15:14
this为当前实例。如果使用new MyClass(...)正确实例化了类,则会自动设置原型链,这就是prototype对象的用途。
它应该是
MyClass.prototype = {
this_func(p1, p2) {...},
that_func(args) {
this.this_func(...);
}
};如果您“没有可用的ES6类关键字”,那么可以使用Babel将ES6代码转换为ES5。这就是它的用途。
发布于 2017-02-22 06:43:16
嗯,我在添加了很多跟踪和日志记录后找到了它。今天我发现,如果你在另一个函数中有一个函数,类的值就会在那个内部函数中发生变化,所以它在某种意义上不属于“this”实例(来自C++背景会让人感到困惑)。
https://stackoverflow.com/questions/42361967
复制相似问题