JavaScript构造函数的方法
文章目录
- 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构造函数的方法相关推荐
- javascript经典实例_提升JavaScript变量的方法有哪些?
程序中的变量无处不在.它们是始终相互交互的小数据和逻辑片段:并且此活动使应用程序存活. 在JavaScript中,使用变量的一个重要方面是提升,它定义了何时可以访问变量.如果您正在寻找有关这方面的详细 ...
- [转]JavaScript构造函数及原型对象
JavaScript中没有类的概念,所以其在对象创建方面与面向对象语言有所不同. JS中对象可以定义为"无序属性的集合".其属性可以包含基本值,对象以及函数.对象实质上就是一组没有 ...
- Javascript 构造函数模式、原型模式
前两天写完组合继承,打算总结一下原型继承的,不过今天看了一下工厂模式.构造函数模式和原型模式,觉得有必要总结一下以加深印象. ------------------------------------- ...
- javascript构造函数
我们相约在今天,在今天讨论javascript构造函数,感谢你如约而至 昨天 我们昨天前几天讨论过构造函数constructor,得出了结论 constructor是原型对象上的一个属性,默认指向这个 ...
- JavaScript内置方法-Date对象
Date对象 >介绍 是一个构造函数,使用时需要new,实例化 主要看常用方法 console.log(new Date()); //返回电脑当前的时间 console.log(new Date ...
- JavaScript 构造函数
文章目录 使用构造函数创建多个对象 JavaScript this 关键字 JavaScript 构造函数的形参 创建对象:构造函数 VS 对象字面量(Object Literal) 在对象中添加属性 ...
- JavaScript构造函数, 实例和静态成员
JavaScript构造函数, 实例和静态成员 构造函数 实例成员 静态成员 内置构造函数 引用类型 Object Array 包装类型 String Number 构造函数 构造函数是专门用于创建对 ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
- IE下javascript的console方法
IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console,IE6下没有.特用此办法来兼容IE6. <br /><pre lang ...
最新文章
- 【剑指offer-Java版】31连续子数组的最大和
- mysql案例_MySQL实例crash的案例详细分析
- 怎样用modelsim做后仿真
- 深度剖析Apache Shardingsphere对分布式事务的支持
- LeetCode 04检查平衡性-简单
- Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)
- druid删除数据_Apache druid 删除数据流程 0.13
- 近期机器学习竞赛汇总~总奖池超千万人民币!
- 虚拟机VMware搭建代码环境
- lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
- 如何利用FineBI做财务分析
- AI一周热闻:北大建立人工智能新校区;英国首例机器人心脏手术致死
- vue 父循环怎么拿子循环中的值_Vue 父组件循环使用refs调用子组件方法出现undefined的问题...
- Problem E: 深入浅出学算法019-求n的阶乘
- Android 服务
- [删括号][判断可行性的dp]
- TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
- B站莫烦Python基础学习笔记
- 【弹出USB大容量存储设备时出问题】两步搞定
- 视频教程-Java8零基础入门视频教程-Java