【发布时间】:2017-09-14 10:59:00
【问题描述】:
我想从一个在没有实例的情况下调用的静态函数中调用一个内部函数,如下所示:
Foo.Bar = function (options) {
Autodesk.Viewing.Extension.call(this, options);
...
this.innerFunc = function innerFunc(){
...
}
};
Foo.Bar.prototype.constructor =
Foo.Bar;
Foo.Bar.SomeStaticFunc = function () {
innerFunc();
}
使用:Foo.Bar.SomeStaticFunc();。
但我得到SomeStaticFunc is not a function。
示例here 为类使用了一个变量,例如var Foo.Bar = function (options) {...,但这与创建类的实例并调用内部函数不一样吗?
let x= new Foo.Bar(options);
x.innerFunc();
还有其他方法吗?
PS:我知道 ES6 类,但我现在不想将这个类迁移到 ES6,因为它不是完全直截了当的。
【问题讨论】:
-
使用对象字面量,否则需要使用
new -
@SterlingArcher 的对象文字,您的意思是像我链接的示例中一样?
-
这没有任何意义。您的
innerFunc仅为实例创建 - 没有实例绝对不可能调用它。 -
所以
innerFunc以及它调用的所有函数也必须是静态的才能正常工作?如果没有类的实例,我将如何调用它们? @Bergi -
要么将它们全部设为静态,全部设为特定于实例,要么让实例方法调用静态方法。
标签: javascript static ecmascript-5