我想将一些函数调用从一个对象委托给另一个对象:
objA.feature = objA.component.feature;
(假设feature在objA和其组件中都应该是一个函数)
但这显然不起作用,因为this从函数中剥离的引用在被调用时最终成为一个完全不同的对象(它实际上是objA代替objB.component).
你需要写这样的东西才能使它工作:
objA.feature = function() {
    objA.component.feature.apply(objA.component, arguments);
};
是否有更短(惯用)的方式来做到这一点?
在较新的运行时中,Function函数原型上有一个名为"bind"的函数:
var newFunc = someFunc.bind(somethingThatShouldBeThis);
将this在调用"newFunc"时引用"somethingThatShouldBeThis".
您可以从函数库中窃取代码,以在缺少本机库的环境中提供"绑定"功能.
编辑 - 这是功能的代码:
Function.prototype.bind = function(object/*, args...*/) {
    var fn = this;
    var args = Array.slice(arguments, 1);
    return function() {
        return fn.apply(object, args.concat(Array.slice(arguments, 0)));
    }
}
很简单,嗯?它只返回一个函数,在调用时,它将第一个参数作为函数调用,并传递你传入的任何参数到结果(也就是上面例子中的"newFunc").主要的皱纹是,这个还可以节省原来传递的额外参数,这有时可以很方便.