博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript面向对象
阅读量:5825 次
发布时间:2019-06-18

本文共 702 字,大约阅读时间需要 2 分钟。

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

创建对象的几中方式:

1.工厂模式

图片描述

2.构造函数式

图片描述

3.原型模式

图片描述

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

图片描述

几种方式的对比

1.工厂模式

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

2.构造函数式

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

3.原型模式

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

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

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

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

转载地址:http://vosdx.baihongyu.com/

你可能感兴趣的文章
centos5.6下virtualbox安装手记
查看>>
mysql脚本
查看>>
OllyDBG 入门系列教学--让你瞬间成为破解高手
查看>>
Dubbo点滴(2)之集群容错
查看>>
Zend Framework 自动加载类的实现方法
查看>>
Cloudera携手CenturyLink提供大数据即服务
查看>>
如何创建线程
查看>>
Eclipse搭建Android ADT+SDK+AVD
查看>>
模拟实现strcpy
查看>>
我的友情链接
查看>>
SCCM 客户端卸载
查看>>
linux下进程通信方式--共享内存
查看>>
Java与设计模式-组合模式
查看>>
PXE网络装机
查看>>
Kelly Rowland - Love Me Better
查看>>
munin监控服务器
查看>>
VIM 高级用法(一)
查看>>
ext3grep恢复linux下误删除的文件
查看>>
独立博客运营11天:谷歌、必应都送快照,百度仍犹豫
查看>>
我的友情链接
查看>>