资讯专栏INFORMATION COLUMN

JS中以new形式创建对象的过程

pkwenda / 1032人阅读

摘要:每一个对象中都会有一个叫的属性,类型野是,也是一个引用对象。首先,当引擎执行操作时,会马上开辟一个块内存,创建一个空对象并将指向这个对象。

JS的new操作到底干了些什么呢?我们一步一步来看。

比如我定义了一个function,并执行new操作:

function Foo(){}
var foo = new Foo();

补补脑:
每一个函数中都会有一个叫prototype的属性,类型是object,即一个引用对象。
每一个对象中都会有一个叫__proto__的属性,类型野是object,也是一个引用对象。

首先,当JavaScript引擎执行new操作时,会马上开辟一个块内存,创建一个空对象(并将this指向这个对象)。

接着,执行构造函数Foo(),对这个空对象进行构造(构造函数里有什么属性和方法都一一给这个空白对象装配上去,这就是为何它叫构造函数了)。

然而,给这个空对象添加了一个叫__proto__的属性,而且这个__proto__指向Foo()的prototype对象。换句话说,就是__proto__ = prototype;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78252.html

相关文章

  • 谷歌地图 API 开发之新建地图

    摘要:最近项目用到谷歌地图,但是看谷歌文档,对于国人来说,还是比较吃力的,网上找资料也并没有太多的资料,所以就想分享给大家。显示了整个地球地图的完全缩放。 最近项目用到谷歌地图,但是看谷歌api文档,对于国人来说,还是比较吃力的,网上找资料也并没有太多的资料,所以就想分享给大家。但是因为本人太懒了,每次研究技术完事时间一久就忘了,更别提分享了,在朋友的鼓励支持之下,重新开始写博客,共享给大家...

    Winer 评论0 收藏0
  • JS 设计模式 十四(策略模式)

    摘要:策略模式定义一系列的算法把它们一个个封装起来并且使它们可相互替换。策略模式要素策略接口,用来约束一系列具体的策略算法。策略模式策略购买辆总金额策略购买辆总金额策略模式优点算法可以自由切换。策略模式缺点策略类会增多。所有策略类都需要对外暴露。 策略模式 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。策略模式是把一个类中经常改变或...

    sutaking 评论0 收藏0
  • 前端基础进阶(三):变量对象详解

    摘要:创建阶段在这个阶段中,执行上下文会分别创建变量对象,建立作用域链,以及确定的指向。检查当前上下文中的参数,建立该对象下的属性与属性值。全局上下文的变量对象以浏览器中为例,全局对象为。前端基础进阶系列目录 showImg(https://segmentfault.com/img/remote/1460000008321426); 开年之后工作热情一直不是很高,这几天一直处于消极怠工状态。...

    YJNldm 评论0 收藏0
  • JS 环境执行栈、变量对象、执行上下文

    摘要:检查上下文中的参数,建立该对象下的属性与属性值检查当前上下文的函数声明,也就是使用关键字声明的函数。 function test() { console.log(a); // undefined console.log(foo()); // 2 var a = ...

    enrecul101 评论0 收藏0
  • /*eslint-disable*/

    摘要:例如在中加入配置块进行配置例如,直接在代码文件中以注释的方式定义需要注意的是,代码文件内以注释配置的规则会覆盖配置文件里的规则,即优先级要更高。 在 Vue-cli 创建的项目中,使用了 ESLint 规范代码的项目中如何针对单个js文件禁用ESLint语法校验,但整个项目依然保留 ESLint 的校验规则? 在代码顶部添加一行注释 /eslint-disable/ (两个/中间有两...

    scq000 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<