new關鍵字的實現

`app

function Foo(name,age){
		    this.name = name
		    this.age = age
		}
		//先搞清楚new關鍵字作了什麼
		//1.建立一個新對象
		//2.改變this的指向,將構造函數中的this指向這個新對象
		 (並將這個新對象中的原型指向構造函數的原型對象)
		//3.執行構造函數裏面的代碼
		//4.返回這個新對象
		function achieveNew() {
	            let obj = {
			    __proto__:Foo.prototype
		        };
		    let argus = [].slice.call(arguments);
		    // Foo.call(obj,...argus);
		    //上一句使用的是擴展運算符,也能夠用apply實現
		    Foo.apply(obj,argus)
		    return obj;
		}
	        var a = achieveNew('lb',23);
	        console.log(a);`複製代碼
相關文章
相關標籤/搜索