Bootstrap

web前端高级JavaScript - 深挖new的实现原理并封装自己的new以及实现内置类原型方法的扩展

深挖new的实现原理

在面向对象开发中,我们常常用new关键字来创建一个对象的实例,然后通过这个实例,我们就可以访问类的各种成员了。这是我们对new的最直观的理解。那么在底层我们看不到的地方,new还干了什么呢,接下来我们用代码来做进一步分析。

function Fun(name){
   
	this.name = name;
	this.sayHello = function(){
   
		console.log(`hello ${
     this.name}`);
	}
    console.log(this);
}

Fun.prototype.sayHi = function(){
   
}

var fun = new Fun('Alvin');
console.log(fun);
fun.sayHello();
console.log(Fun.prototype);
console.log(fun.__proto__);
console.log
;