如何将对象函数作为参数传递给其他对象,如下例所示?
function Page(name) { this.name = name;}
Page.prototype.functionA = function(callback){
callback(null,'I am A');
}
Page.prototype.functionB = function(callback){
callback(null,'I am B');
}
function Sitemap() { this.children = [];}
Sitemap.prototype.getPages = function(){
return this.children;
}
Sitemap.prototype.updateSiteMap = function (Page.functionX, done){
var pages = this.getPages();
var update = function(page, cb) {
page.functionX(function () {
cb(null);
});
};
async.map(pages, update, function(err, result){
done(null, result);
});
};
我想通过条件决定在Object上调用哪个函数
有什么想法吗?
答案 0 :(得分:0)
嗯...这样的事情?
Sitemap.prototype.updateSiteMap = function (functionName, done){
var pages = this.getPages();
var update = function(page, cb) {
page[functionName](function () {
cb(null);
});
};
...
};
// Usage
...updateSiteMap('functionA', done);
答案 1 :(得分:0)
我可以在给定函数的static
和Class Page
中使用.call()
函数运行它:
function Page(name) { this.name = name;}
Page.functionA = function(callback){
callback(null,'I am A');
}
Page.functionB = function(callback){
callback(null,'I am B');
}
function Sitemap() { this.children = [];}
Sitemap.prototype.getPages = function(){
return this.children;
}
Sitemap.prototype.updateSiteMap = function (functionX, done){
var pages = this.getPages();
var update = function(page, cb) {
functionX.call(page, function () {
cb(null);
});
};
async.map(pages, update, function(err, result){
done(null, result);
});
};
谢谢你