javascript面向对象 -- 构造函数

原创 2017年03月31日 22:15:18

小结

ECMAScript 支持面向对象(OO)编程,但不使用类或者接口。对象可以在代码执行过程中创建和
增强,因此具有动态性而非严格定义的实体。在没有类的情况下,可以采用下列模式创建对象。

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

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

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

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

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

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

摘自javascript高级程序设计

版权声明:本文为博主原创文章,未经博主允许不得转载。

JavaScript 面向对象之构造函数+成员函数详解

对象—对象(成员)函数的初步介绍 在某些情况下,我们要需要定义对象函数。比如人对象:除了有一些属性外(成员变量表示的年龄,姓名……),我们人对象还有一些行为比如:可以说话,跑步……,通过学习,我们人还...
  • u013372487
  • u013372487
  • 2015年10月09日 19:00
  • 2309

面向对象 之封装、构造函数

------- android培训、java培训、期待与您交流! ---------- 面向对象概念 类与对象的关系 封装 构造函数 1、面向对象概念 1.1如何理解面向对象 a)         ...
  • xuexuexue11
  • xuexuexue11
  • 2013年07月24日 09:44
  • 772

PHP的面向对象(三)构造函数和析构函数

构造函数   有构造函数的类会在每次创建新对象时调用此函数,所以可以在此函数内做一些使用对象之前的初始化。   如果子类中定义了构造函数,就不会再调用父类的构造函数,可以用parent::__co...
  • L1837435964
  • L1837435964
  • 2016年09月29日 14:44
  • 469

详解Javascript中prototype属性

在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例。但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不...
  • qq_35038153
  • qq_35038153
  • 2017年05月15日 16:11
  • 159

面向对象中的构造函数和析构函数

面向对象:认识或了解世间万物的方式,采用类别的比较。 面向对象包含“类”和“对象”。 “类”分为——》1.抽象:包括【1.外观--》属性 2.做的事--》行为】   |   | ...
  • shangirl
  • shangirl
  • 2016年06月17日 17:22
  • 1127

js面向对象的一些小练习

今天来说一下js面向对象的小练习,废话不多说直接上练习,如果你能做出这个练习,说明你对js对象的一些知识已经很清晰了一、代码 function Foo(){ g...
  • webxiaoma
  • webxiaoma
  • 2017年06月19日 10:24
  • 1180

Perl的面向对象编程-构造函数

之前一直在学习c++,c++给我的感觉就像正规军编程的绝对主力部队,严谨、高效一丝不苟,其语法虽然复杂但是都有章可循有法。因为喜欢linux的原因,学习了perl语言,perl语言给我的感觉就像雇佣军...
  • pangpangchai
  • pangpangchai
  • 2017年09月27日 11:16
  • 118

什么是js的面向对象,以及它的特点和怎样写构造函数

首先呢,我们先来了解一下,什么是对象。可能有学过编程的知道这个概念。简单的说就是对象的概念是:我们不需要它的内部构造,只要会用即可。 就比如,举个很简单的例子。手机,手机是和我们现在有着密切关系的东...
  • a976196371
  • a976196371
  • 2016年10月20日 20:30
  • 403

《JavaScript面向对象精要》

这本书应该是 14 年(或15年)买的,那时人比较傻,看不明白,匆匆看了几十页就束之高阁了,但是一有点很确定,这是本好书。今天终于来到了这里,感觉过了一道坎。引用类型就是对象,对象就是引用类型类型分原...
  • wozaixiaoximen
  • wozaixiaoximen
  • 2017年01月08日 15:34
  • 406

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

2.1 检查变量是否存在时,更好的选择是使用 typeof var result = ""; if (typeof somevar !== "undefined"){ return = "y...
  • xczuis
  • xczuis
  • 2015年09月26日 21:11
  • 1518
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript面向对象 -- 构造函数
举报原因:
原因补充:

(最多只允许输入30个字)