美文网首页
全面理解面向对象的 JavaScript

全面理解面向对象的 JavaScript

作者: 白鹤_ | 来源:发表于2017-09-28 20:14 被阅读0次

    重新认识面向对象

    为了说明 JavaScript 是一门彻底的面向对象的语言,首先有必要从面向对象的概念着手 , 探讨一下面向对象中的几个概念:

    一切事物皆对象

    对象具有封装和继承特性

    对象与对象之间使用消息通信,各自存在信息隐藏

    实际上,JavaScript 语言是通过一种叫做原型(prototype的方式来实现面向对象编程的。下面就来讨论基于类的(class-based)面向对象基于原型的 (prototype-based) 面向对象这两种方式在构造客观世界的方式上的差别。

    使用函数构造器构造对象

    除了字面式声明(literal notation方式之外,ECMAScript 允许通过构造器(constructor)创建对象。每个构造器实际上是一个函数(function) 对象, 该函数对象含有一个“prototype”属性用于实现基于原型的继承prototype-based inheritance共享属性(shared properties对象可以由“new 关键字 + 构造器调用”的方式来创建

    彻底理解原型链 (prototype chain)

    在 ECMAScript 中,每个由构造器创建的对象拥有一个指向构造器 prototype 属性值的隐式引用(implicit reference,这个引用称之为原型(prototype。进一步,每个原型可以拥有指向自己原型的隐式引用(即该原型的原型),如此下去,这就是所谓的原型链(prototype chain在具体的语言实现中,每个对象都有一个__proto__ 属性来实现对原型的隐式引用

    基于类的面向对象和基于原型的面向对象方式比较

    在基于类的面向对象方式中,对象(object依靠类(class来产生。而在基于原型的面向对象方式中,对象(object则是依靠构造器(constructor利用原型(prototype构造出来的。举个客观世界的例子来说明二种方式认知的差异。例如工厂造一辆车,一方面,工人必须参照一张工程图纸,设计规定这辆车应该如何制造。这里的工程图纸就好比是语言中的类 (class),而车就是按照这个类(class制造出来的;另一方面,工人和机器 ( 相当于 constructor) 利用各种零部件如发动机,轮胎,方向盘 ( 相当于 prototype 的各个属性 ) 将汽车构造出来。

    相关文章

      网友评论

          本文标题:全面理解面向对象的 JavaScript

          本文链接:https://www.haomeiwen.com/subject/pvvvextx.html