var obj = {
func: function() {
return: {
add: function() {
}
}
},
somefunc: function() {
}
}
Run Code Online (Sandbox Code Playgroud)
我用来转换这个的原始代码...
var hash = (function() {
var keys = {};
return {
contains: function(key) {
return keys[key] === true;
},
add: function(key) {
if (keys[key] !== true){
keys[key] = true;
}
};
})();
Run Code Online (Sandbox Code Playgroud)
问题:
Jac*_*lin 16
在最基本的层面上,return关键字定义了函数应返回的内容.所以,如果我有这个功能:
function foo() { return 4; }
Run Code Online (Sandbox Code Playgroud)
然后叫它:
var bar = foo();
Run Code Online (Sandbox Code Playgroud)
foo()将返回4,因此现在的价值bar也是4.
根据您的具体示例:
在这个用例中,return用于基本上限制对变量内部hash变量的外部访问.
任何写的函数如下:
(function() {...})();
Run Code Online (Sandbox Code Playgroud)
是自我调用,这意味着它立即运行.通过将值设置hash为自调用函数,这意味着代码可以尽快运行.
该函数然后返回以下内容:
return {
contains: function(key) {
return keys[key] === true;
},
add: function(key) {
if (keys[key] !== true){
keys[key] = true;
}
}
};
Run Code Online (Sandbox Code Playgroud)
这意味着我们可以同时访问contains和add函数:
hash.contains(key);
hash.add(key);
Run Code Online (Sandbox Code Playgroud)
在里面hash,还有一个变量,keys但这不是由设置的自调用函数返回的hash,因此我们无法访问key外部hash,所以这不起作用:
hash.keys //would give undefined
Run Code Online (Sandbox Code Playgroud)
它本质上是一种构造代码的方法,可以通过使用JavaScript闭包来创建私有变量.有关更多信息,请查看此帖子:http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-private-variables-in-javascript/
希望这可以帮助 :)
插口.
| 归档时间: |
|
| 查看次数: |
4512 次 |
| 最近记录: |