博客
关于我
js的new关键字
阅读量:206 次
发布时间:2019-02-28

本文共 970 字,大约阅读时间需要 3 分钟。

new关键字的作用

通过new关键字实例化构造函数,获取对象。

在JavaScript中,new关键字用于创建一个对象,这个对象是通过调用构造函数实现的。构造函数执行后,会返回一个新的对象,这个对象会继承构造函数原型链上的属性和方法。

以下是一个简单的示例:

<script> function Person(name) { this.name = name; this.say = function() { console.log(this.name); } } Person.prototype.age = '18'; Person.prototype.sayYes = function() { console.log('yyy'); } </script>
let p = new Person('小明'); console.log(p);

通过new关键字实例化的对象p,具备了构造函数Person中this的属性:name,也具备了构造函数Person的原型prototype的属性age和方法sayYes。

实现过程

当使用new关键字调用构造函数时,JavaScript会执行以下步骤:

  • 创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
  • 原型的属性和方法被加入到this引用的对象中。原型的执行,确定对象obj的原型链。
  • 新创建的对象由this所引用,并且最后隐士的返回this。绑定this对象为obj,传入参数;执行person构造函数,进行属性和方法的赋值操作。
  • 返回结果。注意:在通过该种方式获取对象时,最终不一定返回的是对象o,要看构造函数的返回值是什么。如果函数返回的是基本类型值,实际会生成一个对象,返回o。如果是函数返回的是引用类型值,则实际返回的是该引用类型值。

  • 例如,以下代码展示了通过new关键字实例化对象的过程:

    var obj = {}; obj.__proto__ = Person.prototype; person.call(obj, '小明');

    在这个过程中,obj会被作为this对象绑定,并传入参数'小明'执行person构造函数。执行后,person.call返回的结果是obj,即为new关键字创建的对象p。该对象会具备Person构造函数赋予的属性和方法。

    转载地址:http://iycp.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMCU(五):STM32F103时钟树初始化分析
    查看>>
    OpenMCU(四):STM32F103启动汇编代码分析
    查看>>
    OpenMetadata 命令执行漏洞复现(CVE-2024-28255)
    查看>>
    OpenMMLab | AI玩家已上线!和InternLM解锁“谁是卧底”新玩法
    查看>>
    OpenMMLab | S4模型详解:应对长序列建模的有效方法
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenMMLab | 不是吧?这么好用的开源标注工具,竟然还有人不知道…
    查看>>
    OpenMMLab | 如何解决大模型长距离依赖问题?HiPPO 技术深度解析
    查看>>