2016-03-04 76 views
0

我有3个码:调用内部函数以JavaScript

代码1:

var object = { 
    someMethod: function(a) { console.log("hello") } 
}; 

代码2:

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

代码3:

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

只有代码3似乎失败:未捕获的SyntaxError:意外肯((...)VM296:3是它在Chrome中给出的错误。有人可以解释它有什么问题吗?

我的想法是在其中创建一个函数'wrapper'和'add','delete'和'update'方法,以便像下面这样访问它们:wrapper.add(param1,param2);

回答

0

在你的第一个例子,你有一个对象命名为object,它有一个方法someMethod它打印到控制台。

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

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

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

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


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

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); 

我认为这不是你要找的。

1

应该

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

这是一个不同的语法,如果你正在使用对象符号与{}function(){}

他们基本上达到同样的目的,你的情况,但语法是不同的。 你当然也可以像其他两个一样写。

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