var value ='aaa';var obj ={
value:"obj"}functionshow(name, age){
console.log(this.value);return{
name: name,
age: age
}}var result = show.call(obj,'cg','18');
console.log(result);--------------------------------------------------------------------------//原型上实现call
Function.prototype.newCall=function(){var ctx = arguments[0]|| window;
ctx.fn =this;var args =[];for(var i =1; i < arguments.length; i++){
args.push('arguments['+ i +']');}var result =eval('ctx.fn('+ args.join(',')+')');//执行delete ctx.fn;return result;}var res = show.newCall(obj,'dg','30');
console.log(res);
functionshow1(arr){
console.log(this.value);return arr;}//原型上实现apply
Function.prototype.newApply=function(ctx, arr){var ctx = ctx || window;
ctx.fn =this;if(!arr){var result = ctx.fn();delete ctx.fn;return result;}else{var args =[];for(var i =1; i < arr.length; i++){
args.push('arr['+ i +']');}var result =eval('ctx.fn('+ args.join(',')+')');//执行delete ctx.fn;return result;}}var res = show1.newApply(obj,['a','b','c']);
console.log(res);