我需要在javascript中声明一个对象吗?

时间:2015-02-19 22:09:32

标签: java javascript

在java中,通常在没有为它们明确声明对象的情况下调用方法。

例如:new Foo().bar("foobar");

我是javascript的新手,以同样的方式调用它是公平的吗?

  1. javascript中允许new Foo().bar("foobar");
  2. OR

    1. 我是否需要申报变量

      var foo = new Foo(); foo.bar("foobar"); ?

4 个答案:

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

此方法也是可链接的。