码迷,mamicode.com
首页 > 编程语言 > 详细

javascript面向对象

时间:2019-12-01 11:46:58      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:映射   编写   共享   副本   面向   对比   有一个   src   基于   

  • 一般认为,js是面向过程模型的语言,很多前端开发者,也偏向以面向过程的方式编写代码,其实在ECMA中是这样定义过对象(object)的,“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)。
  • 在其他的类语言中,对象其实是基于模板来创建的,通过定义一个类作为对现实的抽象,然后由类来实例化对象;而在原型语言(比如js)中,对象是以通过克隆另一个对象的方式创建,被克隆的母体称为原型对象。

创建对象的几中方式:

1.工厂模式
技术图片

2.构造函数式

技术图片

3.原型模式

技术图片

4.构造函数及原型模式的组合式

技术图片

几种方式的对比

1.工厂模式

  • 可以传递参数,但缺点是无法识别对象类型,因为创建对象都是使用Object的原生构造函数来完成的。

2.构造函数式

  • 缺点是在创建对象时,特别针对对象的属性指向函数时,会重复的创建函数实例。

3.原型模式

  • 缺点是省略了为构造函数传递初始化参数,这在一定程序带来不便;另外,最主要是当对象的属性是引用类型时,它的值是不变的,总是引用同一个外部对象,所有实例对该对象的操作都会其它实例。

4.构造函数及原型模式的组合式

  • 最为常用的定义类型方式,结合构造函数模式与原型模式的优点。构造函数模式用于定义实例的属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方方法的引用,最大限度的节约内存。此外,组合模式还支持向构造函数传递参数,可谓是集两家之所长。

注:以上内容参考《JavaScript 高级程序设计》

javascript面向对象

标签:映射   编写   共享   副本   面向   对比   有一个   src   基于   

原文地址:https://www.cnblogs.com/homehtml/p/11965299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!