var copy = function(str){
alert(str);
};
copy("aa");
正常拷贝函数只是拷贝一个引用。拷贝函数与拷贝对象字面量上的函数有区别,需要考虑上下文。比如:
var device = {
a : 1,
b : 2,
sum: function(qq){
return this.a+qq;
},
sum2: function(qq){
return 2+qq;
}
};
拷贝device.sum不能直接持有引用,然后调用。
var func2 = device.sum;
alert(func2(5));
正确拷贝方式:
function clone(obj,originalFunc){ //帮助函数
var proxyContext = obj;
if(typeof originalFunc === 'string'){
originalFunc = obj[originalFunc];
}
var proxyMethod = function () {
return originalFunc.apply(proxyContext, arguments);
};
return proxyMethod;
}
var func = clone(device,device.sum);
alert(func(5)); //正确弹出6