我需要做一些类似的js功能:
let text =function()
{
this.main = ...;
this.toArr = ...;
};
let t = new text();
console.log( t() ); // call a function 'main' in text;
t().toArr(); // call a function 'toArr' in text;
答案 0 :(得分:2)
尝试一下:
let text = function (myarg) {
// Usage: var t = new text(<arg>);
this.uniqueProperty = "test";
var main = () => {
// main code
return {
toArr: () => {
return [myarg, this.uniqueProperty];
}
};
};
return main;
}
var t = new text("hey world");
console.log(t());
console.log(t().toArr());
电话与您的问题相同
注意:您的主函数现在返回对象。
您调用new text("arg")
,但是构造函数返回的是main函数而不是this
。主函数使用toArr
函数返回对象,并且可以通过new text("arg")().toArr
代码进行访问。为什么将两个函数都放在() => {}
中?答案很简单-这就是访问文本实例属性的方法。这样我们就可以访问唯一的text
属性。否则,this
将成为main
函数的引用。
答案 1 :(得分:1)
请深入了解MDN's Inheritance部分。
这是一个简单的用法,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="my.intellij.androidrtp.MainActivity" android:color="@android:color/background_light">
<net.majorkernelpanic.streaming.gl.SurfaceView android:id="@+id/surface" android:layout_width="match_parent" android:layout_height="match_parent" />
</RelativeLayout>