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;
}
相关推荐
老菜鸟的每一天1 小时前
创建型模式-Prototype 模式(原型模式)
设计模式·原型模式
道友老李3 天前
【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)
设计模式·原型模式
Samson Bruce4 天前
【创建模式-原型模式(Prototype Pattern)】
原型模式
強云5 天前
23种设计模式 - 原型模式
设计模式·原型模式
le_duoduo6 天前
原型模式详解(Java)
java·原型模式
lonelyhiker6 天前
javascript的原型链
开发语言·javascript·原型模式
新时代的弩力7 天前
Function.prototype.__proto__==Object.prototype
开发语言·javascript·原型模式
无限大.9 天前
前端知识速记—JS篇:原型与原型链
前端·javascript·原型模式
wy02_9 天前
【设计模式】 建造者模式和原型模式
设计模式·建造者模式·原型模式
ox008011 天前
C++ 设计模式-原型模式
c++·设计模式·原型模式