首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript从成员函数内部调用成员函数

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

Stack Overflow用户
提问于 2017-02-21 16:18:00
回答 2查看 333关注 0票数 0

我是javascript的新手,会将一些(非常旧的)代码转换成更现代的代码,还会进行重构,最后得到的结果如下所示

代码语言: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时,问题就来了,我设法以这种扭曲而告终

代码语言:javascript
运行
复制
that_func(args) {
    //this.this_func(parm1, parm2) causes an error
    myClass.prototype.this_func.call(this, parm1, parm2);
}

有没有更简单的方法来做这件事?当我获得完整的es6时,我将只能使用this.this_func吗?

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

澄清-类的用法如下所示

代码语言:javascript
运行
复制
var myInstance = new MyClass();
myInstance.that_func('xxx');

我得到了一个关于this_func未知的错误(我现在想不起来了,因为现在离有问题的代码还有很长的路要走)

EN

回答 2

Stack Overflow用户

发布于 2017-02-21 18:15:14

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

它应该是

代码语言:javascript
运行
复制
MyClass.prototype = {
    this_func(p1, p2) {...},
    that_func(args) {
        this.this_func(...);
    }
};

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

票数 0
EN

Stack Overflow用户

发布于 2017-02-22 06:43:16

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42361967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档