在javascript中调用内部函数

时间:2016-03-04 12:04:00

标签: javascript

我有3段代码:

代码1:

var object = {
  someMethod: function(a) { calling() }
};
function calling(){console.log("i am calling me");}

代码2:

var wrapper = function(){
    add: function(key, value){ localStorage.setItem(key, value) }
};

代码3:

{{1}}

只有Code 3似乎失败了:Uncaught SyntaxError:意外的令牌((...)VM296:3是它在Chrome中提供的错误。有人可以解释一下它的错误吗?

我的想法是创建一个函数' wrapper'并且'添加','删除'并且'更新'其中的方法,以便访问它们:wrapper.add(param1,param2);

2 个答案:

答案 0 :(得分:1)

应该是

var wrapper = function(){
   this.add = function(key, value){ localStorage.setItem(key, value) }
};

如果您使用{}function(){}

使用对象表示法,则语法不同

它们在您的情况下基本上用于相同的目的,但语法不同。 你当然也可以像其他两个一样写它。

var wrapper = {
    add: function(key, value){ localStorage.setItem(key, value) }
};

答案 1 :(得分:0)

在第一个示例中,您有一个名为object的对象,它有一个方法someMethod,可以打印到控制台。

在第二个示例中,您有一个带有方法和全局函数的对象。对象的方法调用全局函数。

在第三个示例中,您有一个函数,并且您正在尝试向该函数添加方法。这不起作用。您可以向对象添加方法。它应该是这样的:

var wrapper = {
    add: function (key, value) {
        localStorage.setItem(key, value);
    }
};

并使用wrapper.add(key, value)访问它。

另外,在Luka的回答中,他给出的第一个例子不是对象而是对象构造函数。如果您使用以下代码

var wrapper = function(){
   this.add = function(key, value){ localStorage.setItem(key, value) }
};

您无法使用wrapper.add(key, value)访问它。首先,您需要使用构造函数new wrapper()创建对象,然后访问该方法。

var myObject = new wrapper();
myObject.add(key, value);

// or

new wrapper().add(key, value);

我认为这不是您正在寻找的。