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;
}
相关推荐
程序边界2 天前
一台数据集成软件的拆解笔记(上):把 KFS 装起来、跑起来,再挑一堆毛病
笔记·原型模式
General_G6 天前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
冒险的豆子12 天前
JS 原型链 通俗易懂 解释说明(类比 关系)
开发语言·javascript·原型模式
吠品20 天前
箭头函数为什么不能 new
开发语言·javascript·原型模式
2603_9658966225 天前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
YYYing.1 个月前
【设计模式系列 (五) 】原型模式
开发语言·后端·设计模式·原型模式·c/c++
羞儿2 个月前
【读点论文】Overall positive prototype for few-shot open-set recognition
原型模式·小样本学习·特征优化·开集学习
liangshanbo12152 个月前
手写 Function.prototype.call 与 Function.prototype.apply 面试题满分答案
开发语言·javascript·原型模式
江畔柳前堤2 个月前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
艾伦野鸽ggg2 个月前
JavaScript 原型链与原型对象详解
javascript·原型模式