JavaScript中的转发函数?
我正在为数据库API编写一个小包装器,以添加自定义功能 我只想保持原样而不是修改视图函数,因此我尝试分配函数:JavaScript中的转发函数?,javascript,node.js,Javascript,Node.js,我正在为数据库API编写一个小包装器,以添加自定义功能 我只想保持原样而不是修改视图函数,因此我尝试分配函数: core.db.view = bucket.view; 该函数似乎可以工作,但存在HTTP错误。如果我包装函数,一切正常,但我更喜欢只分配函数 core.db.view = function (a, b, c) { return bucket.view(a, b, c); }; 有什么想法吗?下面两个调用之间的唯一区别是它们执行的上下文: core.db.view = buck
core.db.view = bucket.view;
该函数似乎可以工作,但存在HTTP错误。如果我包装函数,一切正常,但我更喜欢只分配函数
core.db.view = function (a, b, c) {
return bucket.view(a, b, c);
};
有什么想法吗?下面两个调用之间的唯一区别是它们执行的上下文:
core.db.view = bucket.view;
bucket.view() // 'this' will be bucket
core.db.view() // 'this' will be core.db
解决方案:
core.db.view = bucket.view.bind(bucket);
PS:bind方法的工作原理与您自己包装函数的方式类似
在Javascript中
obj.method();
及
这是不同的事情。更具体地说,在两种情况下,执行方法主体期间的this值是不同的:在第一种情况下,这将是obj,在第二种情况下,这将是全局对象
解决方案正在将方法调用包装到闭包中:
var m = function(){return obj.method()};
也许您需要执行core.db.view=bucket.view.bindbucket;?请参阅MDN关于绑定的文章:。这是他已经拥有的解决方案。他正在寻找一种解决方案,不需要将其包装到一个新函数中。在我看来,从文本中,他/她不明白为什么仅仅分配函数不起作用。另外,bind基本上是包装函数,它也返回一个新的独立对象,在设置上下文后转发调用。
var m = function(){return obj.method()};