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);`复制代码
相关文章
相关标签/搜索