javascript Function.prototype.call() 的模拟实现一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37722811/article/details/84177650

1.自定义Function.prototype.myCall方法,模拟call方法的功能

		function sum(){
			console.log(this);
		}

		function fn(){
			console.log(this);
		}

		Function.prototype.myCall = function (context) {
            //根据隐含绑定规则,myCall函数的this指向被调用的函数sum
			console.log(this);

            //将函数体中的this关键字替换成context,并包装成一个立即执行函数,使用eval执行
			eval( "(" + this.toString().replace("this","obj") + "()" + ")");
		}

		var obj = {
			name: "Mike"
		}

		sum.myCall(obj);// 打印的this是被替换后的context对象

 运行结果如下:

猜你喜欢

转载自blog.csdn.net/m0_37722811/article/details/84177650