`
javaanswer
  • 浏览: 5357 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类

JavaScript面向对象的程序设计3—组合使用构造函数模式和原型模式

阅读更多

1. 原型对象的问题
    首先,它省略了为构造函数传递初始化参数这一环节,结果所有实例在默认情况下都将取得相同的属性值。
    最大的问题,由其共享的本质所导致的。
        原型中所有的属性是被很多实例共享的,这种共享对于函数非常合适。
        对于那些基本值的属性也还说的过去,因为可以通过为实例添加一个同名的属性屏蔽掉原型中的属性。
        但是,对于包含引用类型值的属性来说,问题就比较突出了。

    function Person() {}
    Person.prototype = {
        constructor : Person,
        name : "answer",
        age : 22,
        job : "Software Engineer",
        friends : ["xhc", "jmn"],
        sayName : function() {
            alert(this.name);
        }
    }
    var person1 = new Person();
    var person2 = new Person();
    person1.friends.push("new");
    alert(person1.friends);    //"xhc,jmn,new"
    alert(person2.friends);    //"xhc,jmn,new"

 一般情况下,不同的实例需要拥有各自不同的全部属性。这个问题,正式很少单独使用原型模式的原因所在。

 

2. 组合使用构造函数模式和原型模式(可作为定义引用类型的一种默认模式)
    创建自定义对象最常见的方式,就是组合使用构造函数模式和原型模式。
    构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。
    因此,每个实例都有各自的一份实例属性的副本,但同时又共享这对方法的引用,最大限度的节省了内存。
    另外这种模式还支持向构造函数传递参数。

    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.friends = ["xhc", "jmn"];
    }
    Person.prototype = {
        constructor : Person,
        sayName : function() {
            alert(this.name);
        }
    }

 

分享到:
评论

相关推荐

    javascript组合使用构造函数模式和原型模式实例.docx

    在JavaScript编程中,构造函数模式和原型模式是两种常见的面向对象编程(OOP)方式。这两种模式各有优势,结合使用能够更好地实现代码复用和封装,提高代码的可维护性和扩展性。 #### 二、构造函数模式 构造函数模式...

    JavaScript面向对象编程指南(第2版).rar

    JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。

    javascript 面向对象程序设计博客文章

    JavaScript是一种广泛应用于Web开发的动态编程语言,尤其以其强大的...以上就是JavaScript中面向对象程序设计的一些关键知识点,通过理解并熟练运用这些概念,开发者可以构建出更加健壮和易于维护的JavaScript应用。

    JavaScript面向对象的程序设计(犯迷糊的小羊)

    面向对象程序设计的基本原则包括封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),这被称为面向对象的三大特性。封装是隐藏对象内部状态和行为的过程,只暴露出操作接口。继承是子对象继承父对象...

    面向对象JavaScript开发

    JavaScript,作为一种广泛应用...JavaScript 面向对象程序设计——继承与多态.pdf 和 JavaScript 面向对象程序设计——封装.pdf 这两个文档可能深入探讨了这些主题,帮助读者深入理解并掌握JavaScript的面向对象开发。

    javascript 经典面向对象设计

    标题“JavaScript经典面向对象设计”指出了本书的主要内容是关于如何使用面向对象编程(OOP)原则和技术来编写高质量、可扩展且可重用的JavaScript应用程序及库。描述中提到本书相比其他中文资料更为清晰,深入到...

    JavaScript面向对象程序程序设计PPT与代码

    JavaScript是一种广泛应用于Web开发的脚本语言,尤其在构建交互式网页和...这份"JavaScript面向对象程序程序设计PPT与代码"资源将详细解释这些概念,并可能包含实际示例,帮助你深入理解和应用这些面向对象编程技术。

    javascript面向对象编程的几种模式详解

    以下是对标题和描述中提到的几种JavaScript面向对象编程模式的详细解释: 1. **构造函数与字面量结合模式** 在JavaScript中,我们可以通过构造函数和字面量语法来创建对象。构造函数用于定义对象的类型,而字面量...

    Javascript 高级程序设计(第3版)超清中文PDF

    书中详细阐述了基于原型的继承、构造函数、对象字面量等面向对象编程模式,以及如何使用类和模块来组织代码,提高代码复用性和可维护性。同时,还涵盖了ES6中的类和模块系统,这是现代JavaScript开发的主流实践。 ...

    JavaScript面向对象编程指南 pdf

    原型链允许对象访问其构造函数原型上的属性和方法。 - 使用`Object.prototype.isPrototypeOf()`方法可以检查一个对象是否存在于原型链中。 4. **继承** - JavaScript的继承主要通过原型链实现。子类(派生类)...

    JavaScript面向对象的支持

    通过原型链,对象可以访问并继承其构造函数原型上的属性和方法。 2. **函数作为一等公民**: 在JavaScript中,函数不仅是可调用的数据类型,还可以作为其他数据类型的成员。函数可以被赋值给变量、作为参数传递,...

    构造函数和实例

    理解构造函数和实例对于掌握JavaScript面向对象编程至关重要。构造函数提供了一种机制,用于在创建新对象时定义其属性和方法,而实例则是这些属性和方法的载体。通过构造函数,可以方便地创建多个具有相同属性和方法...

    javascript面向对象编程(中文).pdf

    ### JavaScript面向对象编程知识点概述 #### 一、现代JavaScript编程概览 - **JavaScript的演进**:自诞生以来,JavaScript经历了从一个简单的脚本语言到现今被广泛应用于构建复杂应用的强大编程语言的过程。它的...

    JavaScript面向对象高级编程

    在当今的软件开发中,JavaScript语言因其在Web前端开发中的广泛应用而变得极其重要。...通过理解这些概念和实践知识,开发者可以在进行JavaScript面向对象高级编程时,设计出更加合理、易于维护和扩展的应用程序。

    javascript面向对象编程

    JavaScript是一种广泛应用于Web开发的动态、弱类型、基于原型的脚本语言,它不仅支持函数式编程,还具有强大的面向对象编程能力...通过阅读《javascript面向对象编程.pdf》这样的资料,你可以深入理解并掌握这些概念。

Global site tag (gtag.js) - Google Analytics