`

理解js中的new

    博客分类:
  • js
 
阅读更多

 

http://blog.csdn.net/motian06/article/details/8258942

new 操作符

在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在Javascript中,我们将这类方式成为Pseudoclassical。
基于上面的例子,我们执行如下代码

 

 
var obj = new Base();

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

 

 

 

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

 

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

第一行,我们创建了一个空对象obj
第二行,我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象
第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”,关于call函数的用法,请参看陈皓《Javascript 面向对象编程》文章

 


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

 

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

那么当我们使用new创建一个新对象的时候,根据__proto__的特性,toString这个方法也可以做新对象的方法被访问到。于是我们看到了:
构造子中,我们来设置‘类’的成员变量(例如:例子中的id),构造子对象prototype中我们来设置‘类’的公共方法。于是通过函数对象和Javascript特有的__proto__与prototype成员及new操作符,模拟出类和类实例化的效果。

  • 大小: 15.2 KB
分享到:
评论

相关推荐

    深入理解JavaScript中的this关键字

    正确理解和运用`this`,能够帮助开发者更好地掌握JavaScript的面向对象编程,从而在项目开发中游刃有余。对于初学者而言,可能需要花费一些时间来熟悉这些规则,但一旦掌握,将会大大提升编程效率和代码质量。

    js中new一个对象的过程

    使用new操作符和构造函数是JavaScript中创建对象和实现继承的一种机制,这个机制非常重要,理解它对于深入学习和应用JavaScript是必不可少的。此外,也需要注意,尽管new操作符在JavaScript中非常强大,但在ES6以后...

    javascript中的类理解

    JavaScript 中的类是一种重要的编程概念,它用于模拟...通过这些基本概念,你可以理解 JavaScript 中类的核心功能。随着对 JavaScript 更深入的学习,你将能够利用类来创建复杂的对象模型,实现更高级的面向对象编程。

    js中函数的理解

    在JavaScript(简称JS)中,函数是至关重要的概念,它们...总结来说,理解JS中的函数是掌握JS编程的关键,包括它们的定义、调用、作用域、闭包以及构造函数的使用。熟练运用这些知识,可以写出更高效、更灵活的JS代码。

    Js中new的运行机制1

    JavaScript中的`new`运算符是用于创建对象实例的关键字,尤其在面向对象编程中起着核心作用。在JavaScript中,`new`的工作机制涉及到多个重要概念,如对象创建、原型链、函数调用以及`this`关键字的指向。下面我们将...

    理解JavaScript中函数的使用

    ### 理解JavaScript中函数的使用 在现代软件开发中,JavaScript已成为不可或缺的一部分,尤其在Web前端领域更是举足轻重。对于开发者而言,掌握JavaScript中的函数使用至关重要,因为函数是实现模块化编程的基础之...

    【JavaScript源代码】JavaScript中new操作符的原理示例详解.docx

    在JavaScript中,`new`操作符是一个至关重要的概念,它用于通过构造函数创建新的对象实例。构造函数是一种特殊类型的函数,通常用来初始化新创建的对象。接下来我们将深入探讨`new`操作符的工作原理,并通过示例进行...

    javascript中new关键字详解

    在JavaScript中,`new`关键字的作用并非仅仅用来创建类的实例对象,而是作为一个核心机制,用于实现对象的构造和继承。在JavaScript中,一切皆为对象,因此`new`的关键在于构建对象之间的关系,尤其是原型链...

    js面向对象简单理解

    在JavaScript中,我们可以使用`new`关键字调用构造函数来创建新实例。例如: ```javascript function Person(name) { this.name = name; } ``` 在这个例子中,`Person`就是构造函数,`this`关键字用来引用新创建...

    原生JS封装_new函数实现new关键字的功能

    总结来说,封装_new函数的目的是为了更深入地理解JavaScript中new关键字的工作机制,并提供一个更加灵活的方式去创建对象实例。通过封装,我们可以在不使用new关键字的情况下实现同样的效果,甚至可以在构造函数...

    threejs 显示中文需要的字体包json

    JSON文件通常由工具如`Glyphs.js`或`fontgen`生成,它们将TrueType字体转换为Three.js可理解的格式。 让我们详细了解一下这个过程: 1. **字体转换**:首先,你需要一个支持中文的TrueType字体,例如方宋...

    关于JS中prototype的理解.docx

    JS 中 prototype 的理解 prototype 是 JavaScript 中的一个重要概念,它是每个构造函数都有的一个属性,即原型。通过 prototype,可以实现继承和扩展对象的功能。prototype 的主要思想是,现在有 1 个类 A,我想要...

    AJAX入门之深入理解JavaScript中的函数.doc

    在AJAX(异步JavaScript和XML)开发中,深入理解函数对象的概念对于编写复杂的、模块化的应用程序至关重要。 首先,函数的声明方式多种多样,如: ```javascript function func1(…){…} var func2=function(…){...

    javascript处理中文base64编码

    分析这个文件可以帮助我们更深入地理解在JavaScript中如何处理中文Base64编码的具体实现。 总结来说,处理JavaScript中的中文Base64编码,关键在于正确地转换中文字符串到UTF-8字节数组,再进行Base64编码和解码。...

    javascript技术难点(三)之this、new、apply和call详解

    JavaScript中的this、new、apply和call是理解JavaScript面向对象编程的关键知识点。首先,我们要知道,this关键字在JavaScript中表示当前上下文的对象,但它并不像Java中的this那样始终指向同一个对象。JavaScript的...

    javascript new 需不需要继续使用.docx

    ### JavaScript中的`new`操作符是否仍需使用? 在探讨`new`操作符在现代JavaScript开发中的使用情况之前,我们先来明确一下`new`的基本功能。`new`操作符主要用于实例化对象,通过调用构造函数来创建一个新的对象...

    详解javascript new的运行机制

    要理解JavaScript中new的运行机制,首先需要了解JavaScript中函数、原型、原型链、this等基础知识。 首先,JavaScript中函数不仅仅可以被当作普通函数调用,还可以被当作构造函数使用,即通过new运算符来调用。当...

    小票打印机new PrinterJobs() 核心方法

    本文将详细解析与“小票打印机new PrinterJobs() 核心方法”相关的知识点,帮助你理解如何在JavaScript环境中操作这种硬件设备。 `new PrinterJobs()` 是一个在JavaScript中初始化打印机作业对象的构造函数,它通常...

    带边框背景的文字标注arcgis for js

    通过学习和理解这些代码,你可以更好地掌握如何在ArcGIS for JavaScript API中实现带边框背景的文字标注。同时,也可以参考Esri的官方文档和社区资源,以获取更多关于TextSymbol、SimpleMarkerSymbol和...

Global site tag (gtag.js) - Google Analytics