Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 什么是;这";引用(在迭代集合时)_Backbone.js_Foreach_Underscore.js - Fatal编程技术网

Backbone.js 什么是;这";引用(在迭代集合时)

Backbone.js 什么是;这";引用(在迭代集合时),backbone.js,foreach,underscore.js,Backbone.js,Foreach,Underscore.js,在遍历集合的模型时,我试图使用this关键字访问集合实例。以下是我的测试代码: myModel = Backbone.Model.extend({ url: 'model.com' }); myCollection = Backbone.Collection.extend({ model: myModel, url: 'collection.com', iterateAll: function(){ this.each(functi

在遍历集合的模型时,我试图使用
this
关键字访问集合实例。以下是我的测试代码:

myModel = Backbone.Model.extend({

    url: 'model.com'
});    

myCollection = Backbone.Collection.extend({

    model: myModel,
    url: 'collection.com',

    iterateAll: function(){
        this.each(function(item){
             console.log(this.url);
             console.log(item.url);
        });
    }
});

mod = new myModel();
col = new myCollection(mod);

col.iterateAll();
此代码输出:

undefined
model.com
使用
this.url
时如何正确引用集合?我希望输出读取
collection.com
而不是
undefined

执行以下操作:

...
iterateAll: function(){
    var me = this;
    me.each(function(item){
         console.log(me.url);
         console.log(item.url);
    });
}
...
有关此范围的更多信息

在JavaScript中非常奇怪

iterateAll: function() {
    var self = this; // _this is also common
    this.each(function(item) {
         console.log(self.url);
         console.log(item.url);
    });
}
基本上,JavaScript没有正式区分方法和函数。因此,每个函数调用——甚至像这样的简单匿名回调——都会得到自己的
this
值。但这通常不是任何人想要的。因此,您可以在临时变量中保留
this
的“有用”值,并在回调中引用它

这是如此普遍,以至于它是通过
=>
语法的一个功能,并且它将成为ES6的一个功能。在那之前…临时变量是我们有的