js创建对象的几种常用方式小结(推荐)


Posted in Javascript onOctober 24, 2010

第一种模式:工厂方式

var lev=function(){ 
return "三水点靠木"; 
}; 
function Parent(){ 
var Child = new Object(); 
Child.name="脚本"; 
Child.age="4"; 
Child.lev=lev; 
return Child; 
}; 
var x = Parent(); 
alert(x.name); 
alert(x.lev());

说明:
1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法
2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent();因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象
3.在函数的最后返回该对象
4.不推荐使用这种方式创建对象,但应该了解
第二种模式:构造函数方式
var lev=function(){ 
return "三水点靠木"; 
}; 
function Parent(){ 
this.name="脚本"; 
this.age="30"; 
this.lev=lev; 
}; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:
1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return
2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外
3..同样的,不推荐使用这种方式创建对象,但仍需要了解
第三种模式:原型模式
var lev=function(){ 
return "三水点靠木"; 
}; 
function Parent(){ }; 
Parent.prototype.name="李小龙"; 
Parent.prototype.age="30"; 
Parent.prototype.lev=lev; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

说明:
1.函数中不对属性进行定义
2.利用prototype属性对属性进行定义
3.同样的,不推荐使用这样方式创建对象
第四种模式:混合的构造函数,原型方式(推荐)
function Parent(){ 
this.name="脚本"; 
this.age=4; 
}; 
Parent.prototype.lev=function(){ 
return this.name; 
};; 
var x =new Parent(); 
alert(x.lev());

说明:1.该模式是指混合搭配使用构造函数方式和原型方式
2.将所有属性不是方法的属性定义在函数中(构造函数方式)
将所有属性值为方法的属性利用prototype在函数之外定义(原型方式)
3.推荐使用这样方式创建对象,这样做有好处和为什么不单独使用构造函数方式和原型方式,由于篇幅问题这里不予讨论
第五种模式:动态原型方式
function Parent(){ 
this.name="脚本"; 
this.age=4; if(typeof Parent._lev=="undefined"){ 
Parent.prototype.lev=function(){ 
return this.name; 
} 
Parent._lev=true; 
} 
}; 
var x =new Parent(); 
alert(x.lev());

说明:
1.动态原型方式可以理解为混合构造函数,原型方式的一个特例
2.该模式中,属性为方法的属性直接在函数中进行了定义,但是因为
if(typeof Parent._lev=="undefined"){ Parent._lev=true;}

从而保证创建该对象的实例时,属性的方法不会被重复创建
3.,推荐使用这种模式
Javascript 相关文章推荐
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
Dec 19 Javascript
JavaScript内核之基本概念
Oct 21 Javascript
javascript eval(func())使用示例
Dec 05 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
利用a标签自动解析URL分析网址实例
Oct 20 Javascript
js实现圆盘记速表
Aug 03 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
js中addEventListener()与removeEventListener()用法案例分析
Mar 02 Javascript
JavaScript arguments 多参传值函数
Oct 24 #Javascript
ExtJs事件机制基本代码模型和流程解析
Oct 24 #Javascript
JQuery EasyUI 对话框的使用方法
Oct 24 #Javascript
javascript textContent与innerText的异同分析
Oct 22 #Javascript
js各种验证文本框输入格式(正则表达式)
Oct 22 #Javascript
JavaScript学习点滴 call、apply的区别
Oct 22 #Javascript
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 #Javascript
You might like
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
Python中的zip函数使用示例
2015/01/29 Python
python循环监控远程端口的方法
2015/03/14 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
python编写Logistic逻辑回归
2020/12/30 Python
Python实现购物车程序
2018/04/16 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
国庆节文艺活动方案
2014/02/03 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
信息技术培训感言
2014/03/06 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
责任担保书范文
2014/05/21 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技