Javascript中new()详解

和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象。 但在 javascript 中,万物皆对象,为什么还要通过 new 来产生对象? 本文将带你一起来探索 javascript 中 new 的奥秘…

要创建 Person 的新实例,必须使用 new 操作符。

以这种方式调用构造函数实际上会经历以下 4个步骤:

(1) 创建一个新对象;

(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;

立即学习“Java免费学习笔记(深入)”;

(3) 执行构造函数中的代码(为这个新对象添加属性) ;

(4) 返回新对象。

 new 操作符

在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在JavaScript中,我们将这类方式成为Pseudoclassical。

基于上面的例子,我们执行如下代码

var obj = new Base();

登录后复制

这样代码的结果是什么,我们在Javascript引擎中看到的对象模型是:

Javascript中new()详解

new操作符具体干了什么呢?其实很简单,就干了三件事情。

var obj = {};obj.__proto__ = Base.prototype;Base.call(obj);

登录后复制

第一行,我们创建了一个空对象obj

第二行,我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象

第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”,关于call函数的用法。

如果我们给Base.prototype的对象添加一些函数会有什么效果呢?

例如代码如下:

Base.prototype.toString = function() { return this.id;}

登录后复制

那么当我们使用new创建一个新对象的时候,根据__proto__的特性,toString这个方法也可以做新对象的方法被访问到。于是我们看到了:

构造子中,我们来设置‘类’的成员变量(例如:例子中的id),构造子对象prototype中我们来设置‘类’的公共方法。于是通过函数对象和Javascript特有的__proto__与prototype成员及new操作符,模拟出类和类实例化的效果。

相关推荐:

JavaScript中new操作符详解

以上就是Javascript中new()详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2777807.html

(0)
上一篇 2025年3月8日 15:14:13
下一篇 2025年3月8日 15:14:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS如何获取url参数

    本文主要为大家分享一篇js获取url参数,js发送json格式的post请求方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 登录后复制 一、获取url所有参数值 function US() {var…

    编程技术 2025年3月8日
    200
  • JS使用json格式的POST请求方法

    本文主要为大家分享js发送json格式的post请求方法,主要以代码的形式和大家分享,希望能帮助到大家。 登录后复制 使用JS 发送JSON格式的POST请求 var us = new US();var xhr = new XMLHttpR…

    编程技术 2025年3月8日
    200
  • js实现传递复杂json参数到controller

    spring mvc在接收集合请求参数时,需要在controller方法的集合参数里前添加@requestbody,而@requestbody默认接收的enctype (mime编码)是application/json,因此发送post请求…

    编程技术 2025年3月8日
    200
  • 正则里的子表达式使用详解

    这次给大家带来正则里的子表达式使用详解,正则里子表达式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用java来实现,如果是java本身正则表达式的用法,会…

    编程技术 2025年3月8日
    200
  • JavaScript中E-mail地址格式验证实例分享

    最近做了一个前端的项目,要求:输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号。本文主要和大家分享javascript中的e-mail 地址格式验证,项目要求输入的数据必须包含@符…

    2025年3月8日
    200
  • 正则的位置匹配使用详解

    这次给大家带来正则的位置匹配使用详解,使用正则位置匹配的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了正则表达式教程之位置匹配。分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间…

    编程技术 2025年3月8日
    200
  • 正则的重复匹配使用详解

    这次给大家带来正则的重复匹配使用详解,正则重复匹配使用的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了正则表达式教程之重复匹配。分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间…

    编程技术 2025年3月8日
    200
  • 正则的元字符使用详解

    这次给大家带来正则的元字符使用详解,正则元字符使用的注意事项有哪些,下面就是实战案例,一起来看一下。 注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的…

    编程技术 2025年3月8日
    200
  • 正则的操作符使用详解

    这次给大家带来正则的操作符使用详解,使用正则操作符的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了正则表达式中的操作符及说明。分享给大家供大家参考,具体如下: 一、普通字符 包括所有未显式指定为元字符的打印和非打印字符组成…

    编程技术 2025年3月8日
    200
  • 在linux里使用正则表达式详解

    这次给大家带来在linux里使用正则表达式详解,在linux里使用正则表达式的正则表达式有哪些,下面就是实战案例,一起来看一下。 前言 正则表达式应用广泛,在绝大多数的正则表达式都可以完美应用,在Linux中,也有着极大的用处。 使用正则表…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论