【发布时间】:2015-11-01 10:31:45
【问题描述】:
我想实例化一个简单的 JavaScript 对象,并立即调用它的方法。是否可以简单地做到这一点,就像在 PHP 中一样:
(new Class('attr', 'attr2'))->myMethod();
JavaScript 中有类似的语法吗?
【问题讨论】:
标签: javascript object methods instantiation
我想实例化一个简单的 JavaScript 对象,并立即调用它的方法。是否可以简单地做到这一点,就像在 PHP 中一样:
(new Class('attr', 'attr2'))->myMethod();
JavaScript 中有类似的语法吗?
【问题讨论】:
标签: javascript object methods instantiation
方法相同,但使用点表示法(标准 javascript):
(new MyObject(1)).toString()
【讨论】:
简单地说,
(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())
【讨论】:
您可以,但您必须将该新对象的实例分配给一个变量。你不能只打电话给(new MyObject(1)).myMethod()。
来自我的演示:
(new myMethod('bob','tony')).log();
会产生错误:
undefined undefined _display:28:3
TypeError: (中间值)(...) 未定义
但这会产生正确的结果:
var a = (new myMethod('bob','tony')).log(); // bob tony
【讨论】:
您应该在控制台中尝试过,因为答案很简单是:
(new Foo()).bar();
但 javascript 更好,因为你甚至不需要大括号:
new Foo().bar();
【讨论】: