位置: 编程技术 - 正文

javascript 对象定义方法 简单易学(javascript对象定义)

编辑:rootadmin
工厂模式: 初级开发者可能会这样定义对象: var obj = new Object(); obj.name = "hero"; obj.showName=function (){alert(this.name);} 这里存在一个问题就是如果我们要在多个地方用obj对象,可能在程序中类似的代码要写好多遍,于是产生了工厂方法 function createObj() { var obj = new Object(); obj.name="hero"; obj.showName=function (){alert(this.name);} return obj; } var obj1 = createObj(); var obj2 = createObj(); 和另外一种方法 构造函数法 function obj (name) { this.name=name; this.showName= function (){alert(this.name);} } 把生成对象的代码封装起来,避免出现重复new的代码,当然也可以进一步改进,就是createObj传递一些参数,而不是给obj赋默认固定值: function createObj(name) { var obj = new Object(); obj.name=name; obj.showName=function (){alert(this.name);} return obj; } var obj1 = createObj("hero"); var o'b'j2=createObj("dby"); 但是存在一个问题,就是我们每次调用createObj函数都会创建新的函数 showName.意味着每个对象都有自己版本的showName,所以要改进避开这个问题. function showName() { alert(this.name) } function createObj(name) { var obj = new Object(); obj.name=name; obj.showName=showName; return obj; } 这样就解决了 重复创建函数的问题, 哈哈哈,大功告成 . 原型方式: 主要是利用对象的prototype属性. function obj() {} obj.prototype.name="hero"; obj.prototype.showName=function() { alert(this.name); } 看起来似乎比刚才的工厂还完美,但是 有一个问题,该函数没有构造函数,属性是通过prototype指定的,这一点在实际应用中很让人头疼,所有的实例的属性都一样实在是不能让人接受.尤其还存在一个安全隐患,那就是当对象中有引用时,例如 加上这样一段 obj.prototype.nameArray = new Array("hero","dby"); 然后 obj1 = new obj(); obj2 = new obj(); obj1.nameArray.push("lxw"); 在obj2的nameArray中将也会看到这个属性,因为两个对象的nameArray指向的是同一个引用. 所以这种方式并不是理想方法. 需要 改进 结合构造函数,在构造函数定义属性,用原型定义方法 例如 fuction obj(name) { this.name = name this.nameArray = new Array("hero","dby"); } obj.prototype.showName = function(){alert(this.name)} 所有的非函数属性都在构造函数里创建,函数属性用prototype方式创建,obj1 中改变nameArray的值,不会影响到obj2对象的nameArray的值, 而且只有一个showName函数,所以没有内存浪费. 基本上完美了,剩下的基本都是一下其他的修饰了.有兴趣的可以自己改着玩玩. 笔者在这里加上一个单例 玩了一下: function obj (name) { this.name = name; this.nameArray=new Array("hero","dby"); if(typeof obj._initialized=='undefined') { obj.prototype.showName=function(){alert(this.name);} obj._initialized="true"; } } 其实不算是单例, 只不过是在构造对象的时候,先判断一个属性是否被定义,如果没有定义,那么用原型方法继续定义对象,如果已经定义了属性,那么就不在重复定义函数了. 该prototype方法只被创建一次,病赋值一次. 又差不多完美了,大功告成 . 这是个人的理解,,希望对大家有帮助,不完善的地方请qq联系,及时改正。 这是一个完整的实例: function Rectangle(name,color,width,heigth){ this.name=name; this.color=color; this.width=width; this.heigth=heigth; } Rectangle.prototype.area=function(){ return this.width*this.heigth } Rectangle.prototype.show=function(){ document.write(this.name+" "+this.color+" "+this.width+" "+this.heigth+"<br/>"); document.write(this.area()); } var obj1= new Rectangle("Rectangle","red",,); obj1.show();

推荐整理分享javascript 对象定义方法 简单易学(javascript对象定义),希望有所帮助,仅作参考,欢迎阅读内容。

javascript 对象定义方法 简单易学(javascript对象定义)

文章相关热门搜索词:javascript怎么定义对象,javascript对象定义不可以跨越多行,js怎么定义对象,js定义对象的几种方法,javascript对象定义,js对象用法,javascript对象定义,javascript对象定义不可以跨越多行,内容如对您有帮助,希望把文章链接给更多的朋友!

JAVASCRIPT THIS详解 面向对象 虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要"

用JavaScript实现单继承和多继承的简单方法 JavaScript就其本质是函数式编程语言,是Lisp的后代,同时又加入了一下面向对象编程的元素,放弃了一些难懂的函数式语言的元素。函数式编程语言可以

javascript 写类方式之一 EMCA规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。1、构造函数方式/***Person类:定义一

标签: javascript对象定义

本文链接地址:https://www.jiuchutong.com/biancheng/386464.html 转载请保留说明!

上一篇:JavaScript 面向对象入门精简篇第1/2页(javascript面向对象精要)

下一篇:JAVASCRIPT THIS详解 面向对象

  • 个人普通发票多少钱
  • 中国电信的通信网络
  • 保险政保业务
  • 账载金额和实际金额的区别
  • 支付所得税属于筹资活动吗
  • 城建税少申报了怎样罚款
  • 房屋合同印花税税率属于个人交的吗
  • 代缴水电费如何做账
  • 劳务有预付款吗
  • 增值税税率如何计算
  • 自产产品用于捐赠的会计处理
  • 出口收汇核销单取消了吗
  • 预付账款属于什么账户
  • 交防伪税控服务费怎么交
  • 营改增之前房产税计税依据
  • 预缴两个点的税是什么意思
  • 维护费可以留到明年抵扣吗?
  • 机票上exempt yqcny是什么意思?
  • 小微企业差旅费可以税前扣除吗
  • 月销售额小于10万的一般纳税人减免
  • 购入商品入库时发现实收物多余应收数计入什么科目
  • 工程部物品领用表格模板
  • 小企业长期待摊费用包括哪些
  • 隔月的发票能作废吗
  • 办公用品收据可以入账吗
  • 外聘人才一次性工资费用入账什么分录?
  • 个体工商户怎么交社保
  • 加速折旧法和直线折旧法的区别
  • safari浏览器开发者模式
  • Win10 Build 19043(21H1最新版)即将推送 更新内容汇总
  • 幼儿园会计做账实操
  • 怎么把浏览器屏幕缩小
  • 坏账准备期末余额怎么计算
  • 记账凭证技巧
  • win7纯净版系统官网
  • 微信小程序完美修真攻略
  • 转让子公司产生的投资收益在合并层面是不是全部抵消
  • 企业销售货物收到价款5000元这笔经济业务属于
  • php文本分割
  • 不动产司法拍卖税费
  • 快速查找附近的人
  • PHP中使用什么关键字声明变量的作用域为全局
  • elementui表格自定义排序
  • HTML+CSS+JS+Jquery+练手项目+...合集(前端学习必备,持续更新中...)
  • tune a video:one-shot tuning of image diffusion models for text-to-video generation
  • 无形资产评估增值可以入账吗
  • 建筑行业预交增值税怎么结转
  • 每个公司都要交房产税吗
  • 帝国cms使用手册
  • 帝国cms使用手册
  • 企业出租的存货包括
  • 中药和中药饮片有区别吗
  • 哪些费用计入管理费用
  • 个税申报汇算清缴流程
  • 培训机构财务怎么做账
  • sql2008用ip连接不了
  • 应收账款与应付账款冲账
  • 进口退货退税
  • 客户提现产生的费用计入
  • 餐饮不得抵扣进项税
  • 什么情况下需要异地预缴增值税
  • 暂估入账的固定资产
  • 单位补扣社保算漏交吗
  • 应付账款期初期末
  • 补交进项转出的税分录
  • 公司收到某人打款怎么做分录
  • 浅谈基于comsol的锂离子电池仿真
  • win7使用率
  • linux自动获取校时服务器时间
  • 不需要远程传输的文件
  • Unity3D中Javascript的基本使用与介绍详解
  • Node.js中的事件循环是什么
  • node.js的安装方法
  • 简单的jquery插件实例
  • Unity3D之Profile
  • js判断时间差
  • 付姓人数
  • 代发工资法律依据
  • 如何理解计算消费税时的(1
  • 公司买车购置税怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设