`
heicx_sudo
  • 浏览: 6649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript构建对象模式与继承

 
阅读更多

常见模式:

1、工厂模式

使用简单的函数创建对象,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式所取代。

function createPerson(name, age, job){
    var o = new Object();
    o.name = name;
    o.age = age;
    o.job = job;
    o.getName = function(){
        alert(this.name);
    };
    return o;
}

var person = new createPerson("heicx", 28, "programmer");

 

2、构造函数模式

可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符。不过,构造函数也有缺点,即它的每个成员都无法得到复用,包括函数。由于函数可以不局限于任何对象,因此没有理由不在多个对象间共享函数。

function Person(name, age, job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.getName = function(){
        alert(this.name);
    }
}

var person = new Person("heicx", 28, "programmer");

 

3、原型模式

使用构造函数的prototype属性来指定那些应该共享的属性与方法。组合使用构造函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法。

function Person(){}

Person.prototype.name = "heicx";
Person.prototype.age = 28;
Person.prototype.job = "programmer";
Person.prototype.getName = function(){
    alert(this.name);
}

var person1 = new Person();
person1.getName();    //  "heicx"---来自原型

var person2 = new Person();
person2.name = "jobs";
person2.getName();    //  "jobs"---来自实例

delete person2.name;
person2.getName();   //  "heicx"---来自原型

 

Javascript对象的继承:

Javascript主要通过原型链实现继承。原型链的构建时通过将一个类型的实例赋值给另一个构造函数的原型实现的。这样,子类型就能够访问超类型的所有属性和方法,这一点与基于类的继承很相似。原型链的问题时对象实例共享所有的属性和方法,因此不适宜单独使用。解决这个问题的技术是'借用构造函数',即在子类型构造函数的内部调用超类型构造函数。这样就可以做到每个实例都具有自己的属性,同时还能保证只使用构造函数模式来定义类型。使用最多的继承模式是最合继承,这种模式使用原型链继承共享的属性和方法,而通过调用'借用构造函数'继承实例属性。

1、原型式继承,可以在不必预先定义构造函数的情况下继承,其本质就是执行给定对象的浅复制。而复制得到的副本还可以得到进一步改造。

2、寄生式继承,与原型式继承非常类似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。对了解决组合继承模式由于多次调用超类型构造函数而导致的低效率问题,可以将这个模式与组合继承一起使用。

3,寄生组合式继承,集寄生式继承和组合继承的优点与一身,是实现基于类型构造的最有效方式。

 

 

分享到:
评论

相关推荐

    JavaScript面向对象编程指南.pdf

    JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库

    JavaScript面向对象编程指南

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

    JavaScript面向对象编程指南 英文版

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的...《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

    JavaScript面向对象编程指南 有书签

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的...《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

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

    依次介绍了JavaScript的发展历史、基础性话题(变量、数据类型、数组、循环以及条件表达式)、函数、对象、原型、继承的实现、BOM和DOM等。附录部分包括了学习JavaScript编程常用的参考资源。尤其值得一提的是,本书...

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

    编写可维护的javascript(英文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

    JavaScript for PHP Developers(中文版)第2版

    深入介绍的面向对象特性,包括原型、代码复用和继承。学习内建的API并了解其全局函数、属性和对象。学习最新的ECMAScript5标准的更新之处。在为大型应用程序编码的时候,使用常用的设计模式。 致谢 前言 第1章简介 ...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    第9章 构建对象 143 9.1 组合关系 143 9.2 分阶段构建 144 9.3 不同类型的组合 146 9.3.1 聚集 146 9.3.2 关联 146 9.3.3 结合使用关联和聚集 148 9.4 避免依赖性 148 9.5 基数 149 9.5.1 多个对象关联 151...

    JavaScript代码复用模式详解

    但在js中,我们可以使用构造函数和new操作符来实例化一个对象,这与其他使用类的编程语言在语法上有其相似之处。 例如: var trigkit4 = new Person(); js在调用构造函数Person时似乎看起来是一个类,但其实际上仍然...

    apuntes-javascript-avanzado:Javascript 笔记 II - 高级

    “面向对象”Javascript(原型,继承) 如何更好地构建 JS 代码(设计和代码模式) 如何测试你的 js 代码(单元测试) 本书中涵盖的概念将使您的 JS 代码面向对象、经过测试、可扩展、更易于理解和更有条理。 ...

    dlist:实验性 Javascript 双向链表

    这是一个 Javascript 和伪经典模式的实验。列表([元素...]) 列表取决于ddict字典对象。 继承的字典方法用于管理 List 状态: seed, cursor并允许使用extend其原型。 种子是一个虚拟节点,它维护对头节点和尾节点...

    php网络开发完全手册

    7.5.1 获得与模式匹配的数组单元—— 7.5.1 preg_grep 110 7.5.2 进行全局正则表达式的匹配—— 7.5.2 preg_match_all 111 7.5.3 进行正则表达式的匹配——preg_ 7.5.3 match 113 7.5.4 转义正则表达式字符——preg_...

    Ajax基础教程(扫描版)

    本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...

    patternsExa:模式练习

    ###prototype 用于继承、复制现有对象或克隆。 ##Structural 通过描述对象交互的简单方式来简化设计。 ###adapter adapta dos clases que se parecen, completa lo que les falta para que sean iguales, y para ...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    经典类与新式类的继承顺序 继承实例讲解 多态实例讲解 本节作业之选课系统开发 第7周 心灵分享 上节回顾 静态方法、类方法、属性方法 课堂扯淡 深入讲解类的特殊成员方法__init__等 深入讲解类的特殊成员方法__new...

Global site tag (gtag.js) - Google Analytics