javascript|javascript中new的实现原理和方式


javascript|javascript中new的实现原理和方式

  1. 函数和构造函数的区别
1) 普通函数执行直接加()而构造函数需要new FunctionName()
2) 普通函数如果没return返回的就是undefined构造函数没有返回的也是对象(作为实例)
3)执行的时候都会产出私有作用域
4)this指向 , 普通函数谁执行的this就是谁 , 构造函数里面的this是返回来的实例
  1. new关键词使用(通过new一个构造函数生成多个实例) , 具体new做的是:
1)第一步:创建对象 ,
2)第二步:对象原型链指向 ,
3)第三步:把构造函数里面的this指向对象
3)第四步:返回对象 , 如果没return也会返回一个对象
javascript 中new的实现原理
// 自己实现一个new方法
function newFactory(Fn) {
// 创建对象
const obj = {
// 原型链指向构造函数的原型链
obj.__proto__ = Fn.prototype
// 函数执行this指向到obj
const res = Fn.apply(obj);
// 如果构造函数执行返回对象就用对象 , 否则就返回obj
return ({).toString.call(res) === '[object Object
' ? res : obj;



var DemoFn =function(){

newFactory(DemoFn) //返回一个对象(实例)
【javascript|javascript中new的实现原理和方式】是不是实现了一个new啊 , 使用和原理你了解多少呢?


    推荐阅读