首页 > 代码库 > JS中new的运行方式
JS中new的运行方式
在JS中,有两个基础原型,分别是Function.prototype和Object.prototype。这两个原型组成了JS中的所有实例他们的关系是 Function.prototype ----> Object.prototype ----> null。
常用的创建类的有两种方法,我们从这两种方法讲两种prototype的关系。
第一种是先有一个原型,直接令新的对象的__proto__指向已经有的原型。这种时候可以类比继承关系,但区别是把那个原型的状态(如属性的取值等)也一并继承过来了。
但是记住这个时候新的对象从原型继承的值如果没有被初始化/赋值,原型中的值改变的话,新的对象中的对应值也会改变。
第二种是使用new来继承,new在JS里这样运行:
1.创建一个最基础的Object对象(内容为空 )并且初始化。
2.把后面的构造函数放进刚创建的obj中,并且设置__proto__为函数的对象。
3.使用创建出的对象作为obj,在obj中执行那个函数,,当然那个函数要对刚创建的这个对象进行初始化,然后返回。
4.如果返回的是Object对象,new就返回这个对象,否则返回刚创建的obj。
这里解释一下函数的原型类型:
比如说有
function A(){ var a = 1;};
那么A是一个Object,他的constructor就是A(),平时调用A()就相当于调用A这个Object的构造函数。
PS:prototype属性是该对象作为proto的时候的类型。__proto__是指向本对象的原型对象的指针。
JS中new的运行方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。