没有合适的资源?快使用搜索试试~ 我知道了~
JavaScript创建对象的四种常用模式实例分析
需积分: 0 0 下载量 106 浏览量
2020-12-09
00:45:31
上传
评论
收藏 56KB PDF 举报
温馨提示
试读
2页
本文实例讲述了JavaScript创建对象的四种常用模式。分享给大家供大家参考,具体如下: 这里介绍了javascript中创建对象常用的几种模式,包括:工厂模式,构造函数模式,原型模式,组合构造函数与原型的模式,动态原型模式。 一.工厂模式 看如下代码: function getMySon(name,sex){ var o={}; o.name=name; o.sex=sex; o.sayName = function(){ alert(this.name); } return o; } son1 = getMySon('li ming','male');
资源推荐
资源详情
资源评论
JavaScript创建对象的四种常用模式实例分析创建对象的四种常用模式实例分析
本文实例讲述了JavaScript创建对象的四种常用模式。分享给大家供大家参考,具体如下:
这里介绍了javascript中创建对象常用的几种模式,包括:工厂模式,构造函数模式,原型模式,组合构造函数与原型的模
式,动态原型模式。
一一.工厂模式工厂模式
看如下代码:
function getMySon(name,sex){
var o={};
o.name=name;
o.sex=sex;
o.sayName = function(){
alert(this.name);
}
return o;
}
son1 = getMySon('li ming','male');
son2 = getMySon('li hong','female');
这就是工厂模式。在函数中定义一个对象,并为其添加属性与方法,最后将这个对象返回。虽然这种模式实现了方便的创建对
象,但是有这样一个问题,即不能判断这个实例到底是谁创建的。
比如 son1 intanceof getMySon并不能返回 true。因为这里的实例确切来说并不是由getMySon 通过new来创建的,而是
getMySon中的 o。
所以工厂模式并不适合需要创建很多种对象的情况。
那么怎么创建对象才能正确的判断实例是从哪儿来的呢?下面就要说到构造函数模式了。
二二.构造函数模式构造函数模式
看如下代码 :
function getMySon(name,sex){
this.name = name;
this.sex = sex;
this.sayName = function(){
alert(this.name);
}
}
son1 = new getMySon('li ming','female');
这就是构造函数模式,注意在调用时要用 new。
在进行new调用时,进行如下几个步骤:
1. 创建一个新的对象(并把空对象的__proto__属性设置为getMySon.prototype)。
2. 将构造函数的作用域赋给新对象(此时this 指向了这个新对象)。
3. 执行构造函数中的代码(通过this 为这个新对象添加属性)
4. 返回新对象。
通过这种方式产生的实例可以使用son1 instanceof getMySon来判断实例是由谁来产生的。
那么使用构造函数有什么问题呢?由于每次使用new时都会创建一个新的对象,那么所有的数据在不同实例之间是不共享的。
但是对于函数sayName来说,它并没有必要创建多个。这样做浪费了空间。
这样就引出了下一种,原型模式。
三三. 原型模式原型模式
看如下代码:
function getMySon(){}
getMySon.prototype.name = 'li ming';
getMySon.prototype.sex = 'female';
getMySon.prototype.sayName = function(){
资源评论
weixin_38592455
- 粉丝: 7
- 资源: 897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python 版冒泡排序算法源代码
- tensorflow-gpu-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- Python 语言版的快速排序算法实现
- 450815388207377安卓_base.apk
- 超微主板 X9DRE-TF+ bios 支持 nvme启动
- 基于Python通过下载气象数据和插值拟合离散数据曲线实现对寒潮过程的能量分析
- 智能车仿真软件.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功