在java中,通常在没有为它们明确声明对象的情况下调用方法。
例如:new Foo().bar("foobar");
我是javascript的新手,以同样的方式调用它是公平的吗?
new Foo().bar("foobar");
OR
我是否需要申报变量
var foo = new Foo();
foo.bar("foobar"); ?
答案 0 :(得分:4)
是的,您可以在不声明变量的情况下调用方法。因为使用new运算符进行初始化将返回对象的新实例。
function Foo(){
this.bar = function() {
alert('hi');
}
}
new Foo().bar(); // alerts hi
您还可以使该方法具有菊花链。
function Foo(){
this.bar = function() {
alert('hi');
return this;
}
}
new Foo().bar().bar(); // alerts hi twice
答案 1 :(得分:2)
你的1,new Foo().bar("foobar");
在编译和工作方面都是正确的,并且在不违反JavaScript典型风格约定的意义上也是正确的。
您可以遵循经验法则,即您为变量指定的任何内容都可以替换该变量(直到该变量更新),所以:
var foo = ANYTHINGHERE
foo.bar("foobar");
可以替换为
(ANYTHINGHERE).bar("foobar");
答案 2 :(得分:0)
var foo = new Foo().bar('foobar') //will Work (was mistaken here originally)
var foo = null
foo = (new Foo()).bar('foobar') //will work
或正如你所说,这也会有效。
var foo = new Foo()
foo.bar('foobar')
答案 3 :(得分:0)
如果你想要一个对象'Foo',并且有一个名为'bar'的属性是一个函数,那么这就是你想要创建的。
var Foo = {}; // Create the object
Foo.bar = function(){ alert('hi'); } // Create the object method
Foo.bar(); // Call the method
此方法也是可链接的。