美文网首页
new关键字具体做了什么?

new关键字具体做了什么?

作者: 三号男嘉宾 | 来源:发表于2017-07-10 14:51 被阅读0次

用 var anObject = new aFunction() 形式创建对象的过程实际上可以分为三步:

第一步是建立一个新对象;

第二步将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象;

第三步就是将该对象作为this参数调用构造函数,完成成员设置等初始化工作。

其实javascript的new关键字只不过做了五件事情:

1.创建Object

2.查找class的prototype上的所有方法、属性,复制一份给创建的Object(注意,如果prototype上有属性是function或者数组或者Object,那么只复制指针)

3.将构造函数classA内部的this指向创建的Object

4.创建的Object的__proto__指向class的prototype

5.执行构造函数class

// 定义类 类名字是 classA

functionclassA(){

this.b=1;

}

classA.prototype.b=44;

classA.prototype.show =function(){

alert(this.b);

};

// 用new实例化

varb =newclassA();

b.show();

// 用函数实例化

functionnewClass(cls,args){

varobj = {};

for(varpincls.prototype)

obj[p] = cls.prototype[p];

obj.__proto__ = cls.prototype;

cls.apply(obj,args||[]);

returnobj;

};

vark = newClass(classA);

k.show();

相关文章

  • new关键字具体做了什么?

    用 var anObject = new aFunction() 形式创建对象的过程实际上可以分为三步: 第一步是...

  • 你真的了解JS里的new吗?

    前言 我们常常喜欢用new关键字去创建一些对象如new Vue(),但是这个关键字的背后究竟做了什么其实没太多人去...

  • new 关键字模拟实现

    首先,new 是JavaScript用来实例化一个对象的关键字,后边跟着构造函数,例如: 那么,new究竟做了什么...

  • 深度剖析new并手动封装(进阶)

    昨晚做了一个梦,梦见有道关于new的笔试题,梦中的情景让我很困惑!所以今天再来彻底的理解new关键字到底做了什么,...

  • new操作符干了什么?

    我们可以一起通过代码实现来看看new关键字到底做了一些什么事情 输出结果如下图: 上例中,new关键字调用的构造函...

  • 前端经典面试题解密:JS的new关键字都干了什么?

    前言 new关键字在实例化获取对象时都做了什么?是一道经常出现在前端面试时的问题。如果只是简单的了解new关键字是...

  • new 对象 class

    new 操作符具体干了什么? 当我们new一个数据的时候,new操作符到底做了什么? 首先是创建实例对象{},th...

  • new做了什么

    如果不使用new 使用new创建 总结new做了下面的事情(1) 创建一个新对象;(2) 将构造函数的作用域赋给新...

  • new()做了什么

    js new到底干了什么,new的意义是什么? 一、学过JS的都知道 创建对象可以这样 用内置的函数对象来构造对象...

  • 3-4、作用域和闭包this-代码示例

    3-4、作用域和闭包this-代码示例 new的过程 使用new关键字调用函数(newClassA(…))的具体步...

网友评论

      本文标题:new关键字具体做了什么?

      本文链接:https://www.haomeiwen.com/subject/auoyhxtx.html