1. 程式人生 > >javascript Function.prototype.call() 的模擬實現一

javascript Function.prototype.call() 的模擬實現一

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物件

 執行結果如下: