例としてクラスがあります:
var Class = {
initialize: function(data){
this.data = data;
},
add: function(node){
//add object
},
remove: function(node){
//remove object
},
findByIndex: function(id){
},
}
等々。
質問: にコンテキストをインポートする方法はfindByIndex
?
たとえばfindByIndex
、別のクラスで関数として使用する必要があります。である必要があることは理解していますbind
が、クラスでどのように使用するのですか?
findByIndex:function(id, ???context???){
????
}
///////////////////////ADD////////////////// これはメソッドです
L.Bookmarks = L.Class.extend({
findByIdRecursive: function(idNumber) {
var data = this.childNodes;
var returnItems = {};
function callback(node) {
if (parseInt(node.id) === idNumber)
returnItems = node;
};
for (var i = data.length - 1; i >= 0; i--) {
this.iterator(data[i], callback, this);
};
return returnItems;
},
iterator: function(node, callback, context) {
console.log(this)
callback.call(this, node);
var nodes = node.childNodes;
if (nodes === undefined) {
return;
};
for (var i = 0; i < nodes.length; i++) {
var iterNode = nodes[i];
this.iterator(iterNode, callback, this);
};
},
});
これは、メソッド iterator を使用する別のクラスです。
L.Book = L.Class.extend({
findByIdRecursive: function(idNumber) {
var data = this.childNodes;
var returnItems = {};
function callback(node) {
console.log(this)
if (parseInt(node.id) === idNumber)
returnItems = node;
};
for (var i = data.length - 1; i >= 0; i--) {
var itertator = L.Book.iterator.call(L.Bookmarks, data[i], callback)
};
return returnItems;
},
});
ご覧のとおり、2 番目のクラスにはメソッド iterator がありません。しかし、最後に owner(with context(this - L.Book)) のようなイテレータを使用する必要があります