2

これまで.applyメソッドを見たことがありません。誰かが私にそれが何をするのか説明できますか?これはhttp://addyosmani.github.com/backbone-fundamentals/から取得されます

var app = app || {}; 
var TodoList = Backbone.Collection.extend({
model: app.Todo,
localStorage: new Backbone.LocalStorage(’todos-backbone’),
completed: function() {
    return this.filter(function( todo ) {
        return todo.get(’completed’); 
    });
},
remaining: function() {
    return this.without.apply( this, this.completed() );
}, 
nextOrder: function() {
    if ( !this.length ) { 
        return 1;
    }
    return this.last().get(’order’) + 1; },
comparator: function( todo ) { 
    return todo.get(’order’);
} 
});
app.Todos = new TodoList();
4

1 に答える 1

8

関数オブジェクトにはメソッドが付属しapply()ていcall()ます。どちらも実質的に同じことを行いますが、わずかに異なります。thisそれらが行うことは、その関数のスコープ内でポインターを定義できるようにすることです。たとえば、次のようにします。

function myFunc(param1, param2) { alert(this) }

var first = 'foo';
var second = 'bar';

myFunc.call('test', first, second); //alerts 'test'

myFunc.apply('test', [first, second]); //alerts 'test'

どちらの方法でも、thisポインターを最初のパラメーターとして渡します。このcall()メソッドでは、2 番目の引数が myFunc の最初のパラメーターになるように、後続のすべてのパラメーターを順番に渡します。メソッドではapply()、追加のパラメーターを配列として渡します。

于 2012-11-09T23:35:47.630 に答える