由于今天有点事,加上对象原型链的东西有点多,所以今天这篇就讲一个小的知识点吧

也算为明天的对象继承做铺垫

工厂模式

虽然使用对象字面量来创建一个对象十分地便捷,但是这个方法有一个显著的缺点

那就是如果我们需要为一个接口创建多个对象,那么将会产生大量的重复代码

所以工厂模式氤氲而生

所谓工厂模式,也就是让我们的代码成为一个工厂,通过这个工厂我们可以源源不断地产生同一产品

其大体实现如下

function createPerson(age,job,name){var o = new Object();o.name = name;o.age = age;o.job = job;o.sayName = function(){alert(o.name);}return o;
}

通过上面这样一种方式我们就可以很便捷地生成一种具有三个属性一个方法的对象

虽然这种方法解决了重复代码的问题,但是还有一个问题,对于多个相似的对象我们如何识别对象类型的问题

也就是说这样的方式我们没法判断对象的类型

构造函数模式

刚才的问题,构造函数模式就是答案

通过该模式我们就可以使用 instanceof 操作符来判断一个对象的类型

以刚才的工厂模式创建的对象举例

其构造函数模式基本实现如下:

function Person(age,job,name){this.age =age;this.name = name;this.job = job'this.sayName = function(){alert(this.name);}
}

这种方法在使用上也与工厂模式有所区别,工厂模式实际上就是封装了创建一类对象的函数

而构造函数模式不能直接调用,如果直接调用将会为全局对象(window)创建age、name、job、sayName几个属性

要使用 new  操作符来进行调用

new操作符实现的功能在前几篇文章中已经详细介绍了

这里就不再赘述

原型模式

虽然构造函数解决了识别对象类型的问题

但是还有一个问题,拿刚才的例子来说,构造函数为每一个实例都创建了一个sayName的函数

而实际上这一步骤是没有必要的

这样如果创建了大量实例的情况下,会占用浏览器大量的内存

为了解决这一问题,原型模式诞生了

由于这里会涉及到原型链相关的东西,具体内容留到明天详细介绍

转载于:https://www.cnblogs.com/lhyxq/p/10165211.html

Javascript高级编程学习笔记(20)—— 创建对象相关推荐

  1. javascript高级编程学习笔记(二)——继承

    2019独角兽企业重金招聘Python工程师标准>>> 写读书笔记的好处在于加深记忆,前一篇总结了编程中创建的对象的几种方式,以及常用的方式,这一篇总结实现继承的方式: 1.对象冒充 ...

  2. JavaScript高级程序设计学习笔记(三)

    分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...

  3. 【C#8.0 and .NET Core 3.0 高级编程学习笔记】

    @C#8.0 and .NET Core 3.0 高级编程学习笔记 前言 为了能精细地完成对C#语言的学习,我决定选择一本书,精读它,理解它,记录它.我想选择什么书并不是最重要的,最重要的是持之以恒的 ...

  4. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  5. Windows高级编程学习笔记(一)

    写在前面的话 之前学的Windows编程都是界面啊.网络编程啊之类的纯应用层面的东西,总是感觉而自己没有达到自己期望中的水平.什么水平呢?如果让你编写监控系统资源的工具,或者DLL注入相关软件,或者底 ...

  6. 高级编程学习笔记day01(知识点篇)

    文件IO学习笔记 1. 文件描述符:所有打开的文件都通过文件描述符引用.     文件描述符0与进程的标准输入关联     文件描述符1与进程的标准输出关联     文件描述符2与进程的标准错误关联 ...

  7. c++高级编程学习笔记4

    C++运算符重载 运算符重载概述 根据第 1 章的描述,C++中的运算符是一些类似于+.<.*和<<的符号.这些运算符可应用于内建类型,例如 int 和 double,从而实现算术操 ...

  8. c++高级编程学习笔记5

    multimap multimap 是一种允许多个元素使用同一个键的 map.和 map 一样,multimap 支持统一初始化.multimap的接口和 map 的接口几乎相同,区别在于multim ...

  9. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

最新文章

  1. mysql limit offset
  2. 三元组顺序表表示的稀疏矩阵加法_数据结构实验题(三元组顺序表表示的稀疏矩阵转置运算)...
  3. [云炬创业基础笔记]第七张创业资源测试10
  4. Android进程间通信(IPC)机制Binder简要介绍和学习计划
  5. HDU 5792 World is Exploding(树状数组+离散化)
  6. AS3 CookBook学习整理(一)
  7. 在.NET Core中使用Exceptionless分布式日志收集框架
  8. c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理
  9. Qt QString to char*
  10. scott用户对象维护
  11. FCM算法的matlab实现(Fuzzy C-means 算法)
  12. php empty 0问题,解析:php empty 和空字符串区别
  13. 统计思维-程序员数学之概率统计_源代码
  14. 8.openCV 裁剪图像
  15. C/C++捕获段错误,打印出错的具体位置(精确到哪一行
  16. debian配置ip
  17. mgetnx redis_Redis几乎所有命令都在这了,还说你不会?
  18. facebook修改权限_如何在Facebook上更改小组的隐私
  19. VR系列——Oculus Rift 开发者指南:五、色差
  20. 丝芙兰、喜茶“线上生意”火爆,如何通过私域流量实现高增长高营收?

热门文章

  1. SQL实现新增表,表名更改,列名更改,约束更改等
  2. 极速引流十八式(2)
  3. 抛物线交点式公式_抛物线交点式
  4. 爱家Aijiacms红色高端大型房产门户系统V9网站源码 带手机版
  5. 微信小程序开发之——附近酒店-实现(2)
  6. SpringBoot 利用MultipartFile上传本地图片生成图片链接
  7. python现在排第几名_2019 编程语言排行榜:C 排名衰退,python即将问鼎
  8. 特征值和特征向量的几何意义、计算及其性质(转载)
  9. 我的 CSS 就是这么可爱——如何组织 CSS
  10. 玩战塔英雄不显示服务器,战塔英雄手游画质怎么设置?画质设置方法图文介绍...