javascript面向对象 -- 构造函数

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

小结

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

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

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

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

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

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

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

摘自javascript高级程序设计

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

相关文章推荐

Javascript面向对象之非构造函数的继承

这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承"。 今天是最后一个部分,介绍不使用构造函数实现"继承"。 一、什么是"非构造函数"的继承? 比如,现在有一个对...

JavaScript面向对象设计二——构造函数模式

在javascript面向对象设计一——工厂模式 中介绍了使用createemployee()函数创建员工类。ecmascript中的构造函数可以用来创建特定类型的对象,如object和array这样...

Javascript 面向对象之构造函数的继承

这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例。 今天要介绍的是,对象之间的"继承"的五种方法。 比如,现在有一个"动物"对象的构造函数。 ...

javascript--面向对象(二)构造函数式的缺点和原型prototype

1、构造函数方式创建对象的缺点         构造函数方式 每次创建对象都会重新定义属性和方法,对于一样的属性和方法就会造成浪费 创建对象会执行一边Person这个函数,属性和方法会重新定义一遍 ...

JavaScript高级程序设计之面向对象的程序设计之继承之借用构造函数第6.3.2讲笔记

在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数 (constructor stealing)的技术(有时候也叫做伪造对象或经典继承)。这种技术的基本思想相当简单,...

javascript的面向对象 函数 闭包 构造函数 继承

script> //------------函数的创建方式------------ function f1() { alert('我是一个兵')...

javascript--面向对象(三)原型对象存在的问题及组合组合使用原型和构造函数

1、原型对象存在的问题 原型的概念:原型对象里所有的属性和方法被所有的构造函数实例化的对象共享 原型里的属性和方法被实例共享,static 修改属性和方法,所有对象都被修改 function Pe...

JavaScript高级程序设计之面向对象的程序设计之创建对象之稳妥构造函数模式 第6.2.7讲笔记

道格拉斯·克罗克福德(Douglas Crockford)发明了JavaScript 中的稳妥对象(durable objects)这 个概念。所谓稳妥对象,指的是没有公共属性,而且其方法也不引用t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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