`

JavaScript对new的一些理解

阅读更多

先举个简单的例子:

function createPerson(name,sex,birthday) {   
        //通过参数传递赋予函数对象值
        this.name = name ;
        this.sex = sex;
        this.birthday = birthday;
        return this;   
}    
createPerson.prototype.sayHi =  function(){  
       alert(this.name+"  is saying hello to everyone.");  
 };

 然后,我们new一个实例,

var rose = new createPerson('Rose ','female','1985-01-01');

这样new createPerson()的过程可以归纳为三点:

       第一步: 是建立一个新对象-rose

       第二步 将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象,也就是因为JS每个函数,都具有原型对象如 (createPeson.prototype)。这就是说rose对象的原型对象设置为构造函数createPeson.prototype

  第三步: 就是将该对象作为this参数调用构造函数,完成成员设置等初始化工作。

 

这时,我们调用

rose.sayHi();

结果是:

   Rose is saying hello to everyone.

 

 

------------------------------------------------------分割线--------------------------------------------------------------------

如果我们不使用new,

var rose1 = createPerson('Rose ','female','1985-01-01');

这时,我们调用

rose1.sayHi();

这时执行出错,rose1对象是没有这个sayHi()方法的,因为没执行“第二步 ”。

 

------------------------------------------------------分割线--------------------------------------------------------------------

我们再使用一种形式:

var rose1 = createPerson('Rose ','female','1985-01-01');
var peter1 = createPerson('Peter','male','1985-03-11');

这时,我们调用

rose1.sayHi();
peter1.sayHi();

结果是:

Peter is saying hello to everyone.

Peter is saying hello to everyone.

结论:

没有使用new,就没有执行“第一步 ,在加载页面时,createPerson()只解析一次.随后无论参数的变化如何,调用次数多少:使用的都是同一个函数对象。

 

 

另外:关于function的返回值,如果function的返回值是对象的话则返回该对象,否则返回function的实例

 

分享到:
评论

相关推荐

    深入理解javascript原型和闭包.pdf

    JavaScript原型和闭包是这门语言中两个比较难以理解且与其他面向对象语言区别较大的概念。理解这两个概念,不仅能让我们更深层次地理解JavaScript,而且有助于我们了解编程语言的设计思路,拓宽我们的视野。 首先,...

    理解Javascript内存分配原理

    ### 理解JavaScript内存分配原理 #### 一、引言 在JavaScript编程中,内存管理是一个非常重要的概念。理解JavaScript如何处理内存分配对于优化代码性能、避免内存泄漏等问题至关重要。本文将详细介绍JavaScript中的...

    javascript中的类理解

    JavaScript 中的类是一种重要的编程概念,它用于模拟现实世界中的对象和它们之间的关系。在 JavaScript 中,类的...随着对 JavaScript 更深入的学习,你将能够利用类来创建复杂的对象模型,实现更高级的面向对象编程。

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

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

    深入理解JavaScript中的this关键字

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

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

    ### JavaScript中的`new`操作符是否仍需使用? 在探讨`new`操作符在现代JavaScript开发中的使用情况之前,我们先来...同时,了解`new`操作符的历史背景和使用场景,有助于更好地理解和掌握JavaScript语言的核心概念。

    javaScript闭包的理解

    ### JavaScript闭包的理解 #### 一、闭包的定义与特点 闭包是JavaScript中一个非常重要的概念,它指的是一个函数能够访问并操作其外部作用域中的变量的能力。这一特性使得JavaScript具有了一些其他语言不具备的...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    JavaScript是Web开发中不可或缺的一...通过学习这些知识点,开发者可以编写出更高效、可维护的JavaScript代码,应对复杂的项目需求,提升开发效率,减少bug出现的可能性,同时也能更好地理解和应用现有的开源库和框架。

    JavaScript精华(常用JavaScript模块)

    这个“JavaScript精华(常用JavaScript模块)”的资源集锦,显然是为了帮助开发者深入理解和掌握JavaScript的核心概念和常用的模块化技术。 首先,JavaScript的核心概念包括变量、数据类型、运算符、流程控制(如条件...

    理解JavaScript中函数的使用

    通过对JavaScript中函数的深入理解,我们可以更好地利用它们来构建高效、可维护的代码。函数不仅能够帮助我们将复杂的任务分解成更小的部分,而且还能通过组合这些部分来创建强大的功能。无论是在简单的脚本还是复杂...

    Javascript面向对象编程.

    JavaScript是一种广泛应用于Web开发的脚本语言,尤其在前端领域占据着核心地位。面向对象编程(Object-Oriented Programming,OOP)是...学习这些材料将有助于深入理解JavaScript的面向对象编程,提升你的编程技能。

    犀牛JavaScript第5版下

    《犀牛JavaScript第5版》对于JavaScript的深入理解提供了丰富的实例和详尽的解释,不仅适合初学者系统学习,也对有经验的开发者有很高的参考价值。通过阅读这本书,读者能够掌握JavaScript的精髓,无论是在Web开发、...

    javascript new后的constructor属性.docx

    ### JavaScript中的`new`操作与`constructor`属性详解 #### 一、`new`操作符的理解 在JavaScript中,`new`操作符被用于创建一个由构造函数定义的新实例对象。当使用`new`关键字调用一个构造函数时,会执行以下步骤...

    javascript试题(附答案)

    这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据类型 在JavaScript中,变量不需要预定义类型,可以动态改变。`var`关键字用于声明变量,例如`...

    理解Javascript原型继承原理

    ### 理解Javascript原型继承原理 #### 一、引言 在JavaScript中,原型继承是一种非常核心且独特的机制,它使得对象能够继承其他对象的属性和方法。本文旨在深入探讨这一机制,并通过具体的示例代码帮助读者更好地...

    《JavaScript内核系列》和《JavaScript面向对象基础》

    《JavaScript内核系列》和《JavaScript面向对象基础》这两本书是深入理解JavaScript编程的重要资源。JavaScript,作为一种广泛应用于Web开发的脚本语言,其内核和面向对象特性是开发者必须掌握的基础知识。以下是对...

    JavaScript_语言基础.pdf

    课程面向对前端开发感兴趣的后端开发人员,目标是使学员通过学习JavaScript基础,能够理解JavaScript的基本原理,并通过实例演示加深理解。在课程中,学员将完成一些基础的JavaScript习题,并在后续的工作中能够读懂...

    JavaScript系列教程3

    现在,我们将继续深化对JavaScript的理解。 首先,我们要探讨的是对象。在JavaScript中,对象是一种复杂的数据结构,它由键值对组成,可以看作是一个关联数组。理解对象的创建、属性访问和方法调用是学习JavaScript...

    深入浅出Javascript压缩包3

    在阅读第三部分时,你将深入探讨前面提到的一些高级主题,并通过实例加深理解。同时,实践练习和挑战问题将帮助巩固所学知识,提升实际编程能力。 总之,《深入浅出JavaScript压缩包3》提供了深入学习JavaScript的...

    javascript高级编程JavaScript.pdf

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其在实际应用中常常会遇到命名冲突的问题。特别是在大型项目中,随着代码量的增加,不同模块之间的函数或变量名称可能相同,导致错误。为了解决这个问题,开发者...

Global site tag (gtag.js) - Google Analytics