js中的new方法

new方法的作用:创建一个实例对象,并继承原对象的属性和方法;

new对象内部操作:

1,创建一个新对象,将新对象的proto属性指向原对象的prototype属性;

2,构造函数执行环境中的this指向新对象;

3,执行构造函数中的代码;

4,若构造函数返回的是一个对象则返回此对象,若非,则返回新创建的对象;

此过程完成了创建对象、对象继承、属性初始化过程,被称为隐式原型继承;

手写实现new:

javascript 复制代码
function new_(Constructor,args){
    var obj = Object.create(null);// 创建一个新对象
    obj.__proto__ = Consturct.prototype;// 将旧对象原型赋值给新对象
    var result = Constructor.apply(obj, args);// 将this指向新对象
    return typeof result === 'object' ? result : obj;
}
相关推荐
碎梦归途3 天前
23种设计模式-创建型模式之原型模式(Java版本)
java·开发语言·jvm·设计模式·原型模式
巴巴_羊3 天前
JavsScript 原型链
开发语言·javascript·原型模式
Leaf吧3 天前
java 设计模式 原型模式
java·设计模式·原型模式
大猫会长3 天前
js原型链prototype解释
原型模式
GISer_Jing5 天前
[终极版]Javascript面试全解
javascript·面试·原型模式
尘寰ya9 天前
如何实现一个“纯净”的空对象(无原型链属性)?
javascript·面试·原型模式
尘寰ya9 天前
什么是原型污染?如何防止原型污染?
前端·面试·原型模式
啊QQQQQ10 天前
设计模式-原型模式
java·设计模式·原型模式
Attacking-Coder12 天前
前端面试宝典---原型链
前端·javascript·原型模式
天下代码客12 天前
【JS】关于原型/原型链
原型模式