Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 1x 1x 80x 58x 80x 80x 80x 80x 80x 74x 41x 41x 41x 80x 1x | /**
* 函数代理,确保函数在当前类创建的实例上下文中执行。
* - 这些用于绑定事件的代理函数都放在属性 instance.bound 上。
* - 功能类似 Function.prototype.bind 。
* - 可以传递额外参数作为函数执行的默认参数,追加在实际参数之后。
* @method mvc/proxy
* @param {object} instance 对象实例
* @param {string} [name='proxy'] 函数名称
*/
var $type = require('../obj/type');
var AP = Array.prototype;
function proxy(instance, name, proxyArgs) {
if (!instance.bound) {
instance.bound = {};
}
var bound = instance.bound;
proxyArgs = proxyArgs || [];
proxyArgs.shift();
name = name || 'proxy';
if ($type(bound[name]) !== 'function') {
bound[name] = function () {
Eif ($type(instance[name]) === 'function') {
var args = AP.slice.call(arguments);
return instance[name].apply(instance, args.concat(proxyArgs));
}
};
}
return bound[name];
}
module.exports = proxy;
|