【问题标题】:javascript: call a default function?javascript:调用默认函数?
【发布时间】:2018-06-25 10:31:34
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour,环顾四周,并通读help center,尤其是How do I ask a good question?,您并不清楚您在问什么。我们可以帮助您按照您的描述进行操作,但这很不寻常,可能不是您真正想要做的。
  • 你需要问一个清晰简洁的问题。除此之外,您需要准确解释您为解决它所做的工作以及您遇到的问题。
  • Stack Overflow 是一个非常活跃的地方。当您发布问题(或答案)时,停留一段时间以解决评论者提出的任何问题。

标签: javascript function call default


【解决方案1】:

试试这个:

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"),但构造函数返回主函数而不是this。主函数返回带有toArr函数的对象,可以通过new text("arg")().toArr代码访问。为什么我将这两个函数都放入() =&gt; {}?。答案很简单——这就是访问文本实例属性的方法。所以我们可以访问唯一的text 属性。否则,this 将是 main 函数引用。

【讨论】:

    【解决方案2】:

    请深入了解MDN's Inheritance部分。

    这是一个简单的用法如下:

    let text = function()
    {
        this.main = function(){
          return {a:1};
        }
        this.toArr = function(){
          return [1,2,3];
        }
    };
    
    let t = new text();
    
    console.log( t.main() ); // call a function 'main' in text;
    console.log(t.toArr()); // call a function 'toArr' in text;

    【讨论】:

    • 这不是他想要的。他想用t() 代码调用主函数,而不是t.main()。检查我的答案。
    猜你喜欢
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2015-10-09
    • 2020-11-25
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多