Luc*_*cas 11 javascript foreach angularjs
我正在分析这个angular.forEach
功能:
这是代码angular.forEach
:
var values = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
}, log);
expect(log).toEqual(['name: misko', 'gender: male']);
Run Code Online (Sandbox Code Playgroud)
上下文的描述是:
对象成为迭代器函数的上下文(this).
我想出了一些问题:
为什么使用和何时对参数上下文有用?!
为什么用这个代替日志变量?
在您提供的示例中,使用this
或直接使用它是相同的log array
.这是因为callback
用于forEach method
和log array
定义相同scope
.
然而,可能有一些案件中,这callback
里面有个不同的定义scope
比log array
.然后调用应如下所示:
angular.forEach(values, getNames, log);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们应该this
在回调内部使用,因为它将引用log array
哪个是以不同的方式定义的scope
.
编辑:
请参阅此JSFiddle演示以及显示我所解释的代码.
var getNames = function(value, key) {
this.push(key + ': ' + value);
};
var processObject = function(){
var log = [];
// Now getNames callback is defined in a different
// scope than log
angular.forEach(values, getNames, log);
return log;
}
var values = {name: 'misko', gender: 'male'};
var resultArray = processObject(values);
// This gives same result as your exmple
alert(resultArray);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1731 次 |
最近记录: |