标签:
function Page() {}
Page.prototype = {
constructor: Page,
postA: function (a) {
console.log(‘a:‘ + a);
},
postB: function (b) {
console.log(‘b:‘ + b);
},
postC: function (c) {
console.log(‘c:‘ + c);
},
check: function () {
return Math.random() > 0.5;
}
}
function checkfy(obj) {
for (var key in obj) {
if (key.indexOf(‘post‘) === 0 && typeof obj[key] === ‘function‘) {
(function (key) {
var fn = obj[key];
obj[key] = function () {
if (obj.check()) {
fn.apply(obj, arguments);
}
};
}(key));
}
}
} // end checkfy()
checkfy(Page.prototype);
var obj = new Page();
obj.postA(‘checkfy‘);
obj.postB(‘checkfy‘);
obj.postC(‘checkfy‘);
参考:GitHub
我的理解:在 checkfy() 函数内部,因为 fn.apply() 调用,所以自调用的参数 key 才会接受 obj 的方法执行时的参数?
也不是很理解原理。
标签:
原文地址:http://www.cnblogs.com/xiaochechang/p/5933510.html