文章目录

  • Object构造函数
    • 使用new声明对象
    • 使用{}声明对象
  • 工厂模式
  • 自定义构造函数模式
  • 构造函数+原型的组合模式

Object构造函数

使用new声明对象

  • 方法:先创建空Object对象, 再动态添加属性/方法
  • 适用场景:起始时不确定对象内部数据
  • 缺点:语句太多
  // 创建p对象var p = new Object();p = {};//此时内部数据是不确定的,因此设置为空// 动态添加属性p.name = 'Bob';p.age = 12;//动态添加方法p.showName = function () {alert("我的名字叫做"+this.name);}

使用{}声明对象

  • 方法:使用{}创建对象, 同时指定属性/方法
  • 适用场景:起始时对象内部数据是确定的
  • 缺点:如果创建多个对象, 有重复代码
  var p = {name: 'Bob',age: 12,showName: function () {alert("我的名字叫做"+this.name);}}

工厂模式

工厂模式:原料、加工、出厂(凡是满足上述三个步骤创建对象的函数,叫做工厂方法)

  • 方法:通过工厂函数动态创建对象并返回
  • 适用场景:需要创建多个对象
  • 特点:没有new;每一个新创建出来的对象独有一套函数
  • 问题:对象没有一个具体的类型, 都是Object类型
 function createPerson(name,sex){//1.原料var obj=new Object();//创建空对象//2.加工//对空对象增加属性obj.name=name;obj.sex=sex;//对空对象增加方法obj.showName=function(){alert("我的名字叫做"+this.name);}obj.showSex=function(){alert("我的性别是"+this.sex);}//3.出厂return obj;
}var p1=createPerson("red","女");//创建一个p1对象,p1有name和sex属性,有showName和showSex方法

自定义构造函数模式

  • 方法:自定义构造函数, 通过new创建对象
  • 适用场景:需要创建多个类型确定的对象
  • 缺点: 每个对象都有相同的数据, 浪费内存
function createPerson(name,sex){//对空对象增加属性this.name=name;this.sex=sex;//对空对象增加方法this.showName=function(){alert("我的名字叫做"+this.name);}this.showSex=function(){alert("我的性别是"+this.sex);}
}//通过new调用函数,我们把它叫做构造函数,构造函数可以构造对象,构造函数首字母大写var p1=new Person("red","女");//创建一个p1对象p1.showName();p1.showSex();

构造函数+原型的组合模式

  • 方法: 自定义构造函数, 属性在函数中初始化, 方法添加到原型上
  • 特点:将方法添加到构造函数的原型prototype上,构造函数构造出来的对象共享原型上的所有方法
  • 适用场景:需要创建多个类型确定的对象
function createPerson(name,sex){this.name=name;this.sex=sex;
}//Person构造函数添加方法,添加在构造函数的原型prototype上Person.prototype.showName=function(){alert("我的名字叫做"+this.name);}Person.prototype.showSex=function(){alert("我的性别是"+this.sex);}var p1=new Person("red","女");p1.showName();p1.showSex();

JavaScript构造函数的方法相关推荐

  1. javascript经典实例_提升JavaScript变量的方法有哪些?

    程序中的变量无处不在.它们是始终相互交互的小数据和逻辑片段:并且此活动使应用程序存活. 在JavaScript中,使用变量的一个重要方面是提升,它定义了何时可以访问变量.如果您正在寻找有关这方面的详细 ...

  2. [转]JavaScript构造函数及原型对象

    JavaScript中没有类的概念,所以其在对象创建方面与面向对象语言有所不同. JS中对象可以定义为"无序属性的集合".其属性可以包含基本值,对象以及函数.对象实质上就是一组没有 ...

  3. Javascript 构造函数模式、原型模式

    前两天写完组合继承,打算总结一下原型继承的,不过今天看了一下工厂模式.构造函数模式和原型模式,觉得有必要总结一下以加深印象. ------------------------------------- ...

  4. javascript构造函数

    我们相约在今天,在今天讨论javascript构造函数,感谢你如约而至 昨天 我们昨天前几天讨论过构造函数constructor,得出了结论 constructor是原型对象上的一个属性,默认指向这个 ...

  5. JavaScript内置方法-Date对象

    Date对象 >介绍 是一个构造函数,使用时需要new,实例化 主要看常用方法 console.log(new Date()); //返回电脑当前的时间 console.log(new Date ...

  6. JavaScript 构造函数

    文章目录 使用构造函数创建多个对象 JavaScript this 关键字 JavaScript 构造函数的形参 创建对象:构造函数 VS 对象字面量(Object Literal) 在对象中添加属性 ...

  7. JavaScript构造函数, 实例和静态成员

    JavaScript构造函数, 实例和静态成员 构造函数 实例成员 静态成员 内置构造函数 引用类型 Object Array 包装类型 String Number 构造函数 构造函数是专门用于创建对 ...

  8. 这是如何更好地利用JavaScript数组的方法

    by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...

  9. IE下javascript的console方法

    IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console,IE6下没有.特用此办法来兼容IE6. <br /><pre lang ...

最新文章

  1. 【剑指offer-Java版】31连续子数组的最大和
  2. mysql案例_MySQL实例crash的案例详细分析
  3. 怎样用modelsim做后仿真
  4. 深度剖析Apache Shardingsphere对分布式事务的支持
  5. LeetCode 04检查平衡性-简单
  6. Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)
  7. druid删除数据_Apache druid 删除数据流程 0.13
  8. 近期机器学习竞赛汇总~总奖池超千万人民币!
  9. 虚拟机VMware搭建代码环境
  10. lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
  11. 如何利用FineBI做财务分析
  12. AI一周热闻:北大建立人工智能新校区;英国首例机器人心脏手术致死
  13. vue 父循环怎么拿子循环中的值_Vue 父组件循环使用refs调用子组件方法出现undefined的问题...
  14. Problem E: 深入浅出学算法019-求n的阶乘
  15. Android 服务
  16. [删括号][判断可行性的dp]
  17. TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
  18. B站莫烦Python基础学习笔记
  19. 【弹出USB大容量存储设备时出问题】两步搞定
  20. 视频教程-Java8零基础入门视频教程-Java

热门文章

  1. MySQL日期和时间戳的转换
  2. Http Multipart报文格式
  3. 计算机室的管理制度和管理职责,计算机教室管理制度和管理员职责.doc
  4. RemoteApp Tool(远程控制软件)v6.0.00学习及使用
  5. linux wifi连接上不能上网
  6. c语言 利息计算系统,银行利息计算系统C语言做
  7. 我的生命格子图和墓志铭
  8. Java描述 LeetCode,513. Find Bottom Left Tree Value 找左下角的值
  9. 「数智双BUFF」关键业务加速篇
  10. 实习项目(APP线上活动页面)