javascript:调用默认函数?

时间:2018-06-25 10:31:34

标签: javascript function call default

我需要做一些类似的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;

2 个答案:

答案 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>