【问题标题】:Instantiate JavaScript object and call method at once一次实例化 JavaScript 对象并调用方法
【发布时间】:2015-11-01 10:31:45
【问题描述】:

我想实例化一个简单的 JavaScript 对象,并立即调用它的方法。是否可以简单地做到这一点,就像在 PHP 中一样:

(new Class('attr', 'attr2'))->myMethod();

JavaScript 中有类似的语法吗?

【问题讨论】:

    标签: javascript object methods instantiation


    【解决方案1】:

    方法相同,但使用点表示法(标准 javascript):

    (new MyObject(1)).toString()
    

    【讨论】:

      【解决方案2】:

      简单地说,

       (new ClassName()).methodName();
      

      如果你从methodName()返回this,你甚至可以链接方法

      (new ClassName()).methodName().secondMethod();
      

      var date = new Date();
      alert('With later invocation '+date.toDateString())
      
      alert('With immediate invocation '+(new Date()).toDateString())

      【讨论】:

        【解决方案3】:

        您可以,但您必须将该新对象的实例分配给一个变量。你不能只打电话给(new MyObject(1)).myMethod()

        来自我的演示:

        (new myMethod('bob','tony')).log();
        

        会产生错误:

        undefined undefined _display:28:3

        TypeError: (中间值)(...) 未定义

        但这会产生正确的结果:

        var a = (new myMethod('bob','tony')).log(); // bob tony
        

        DEMO

        【讨论】:

          【解决方案4】:

          您应该在控制台中尝试过,因为答案很简单

          (new Foo()).bar();
          

          但 javascript 更好,因为你甚至不需要大括号:

          new Foo().bar();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-06
            • 2010-09-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多