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 静态对象和构造函数的使用和公私问题
Mar 02 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
JS控制表格实现一条光线流动分割行的方法
Mar 09 Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
May 07 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
Sep 05 Javascript
JS求解两数之和算法详解
Apr 28 Javascript
Javascript实现简易天数计算器
May 18 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
ThinkPHP文件上传实例教程
2014/08/22 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
Python操作Excel之xlsx文件
2017/03/24 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python 监测文件是否更新的方法
2019/06/10 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
weblogic面试题
2016/03/07 面试题
新郎父亲婚宴答谢词
2014/01/11 职场文书
商铺租房协议书范本
2014/12/04 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
运动会主持词大全
2015/07/02 职场文书
客户答谢会致辞
2015/07/30 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python
golang定时器
2022/04/14 Golang