位置: 编程技术 - 正文

面向对象的编程思想在javascript中的运用上部(面向对象的编程语言更适合大规模编程)

编辑:rootadmin
其实,面向对象的思想是独立于编程语言的,例如在C#中,在一个静态类的静态方法中,按照过程式开发调用一系列静态函数,我们很难说这是面向对象的编程,相反,象jquery和extjs这样优秀的javascript库,却处处体现着面向对象的设计思想。本文不打算探讨javascript是否能够算做面向对象的编程语言,这个问题是重视中国式考试的人应该关注的,我这里只是简单的说明如何在javascript中使用面向对象的编程思想。 面向对象首先要有对象。在javascript中创建一个对象非常简单: 这样就产生了一个对象,我们可以很方便的给这个对象添加属性和方法: 不过大多数人还是习惯把对象的属性和方法放在定义对象的一对{}里边: 访问属性和方法有两种方式,第一种: 这种写法很常见,C#中调用对象的属性和方法也是这种方式。还有一种是javascript中比较特别的,使用属性或者方法的名字作为索引来进行访问: 这好像有点和孔乙己“茴香的茴字有几种写法”差不多了,事实上,很少有人使用索引来调用对象的属性或者方法。 除了我们自定义的属性和方法,我们的对象还有一个constructor属性以及toString()等方法。这些属性和方法是从Object内置对象来的,所有的对象都会有这些属性和方法。其中constructor属性指向构造出该对象的构造函数。我们没有使用构造函数来创建对象,事实上,js的解释器会使用Object构造函数。如果我们自己定义了构造函数,那么便可以通过该构造函数来创建对象,这样可以使得创建的对象具有相同的属性和方法,这便开始有点面向对象的味道了。好,我们从一个简单的例子开始看看如何创建一个构造函数吧: 我们定义了一个名字叫Person的构造函数,该构造函数有三个属性和一个方法,通过构造函数来产生一个对象并调用方法也非常简单: 运行后我们可以看到弹出一个对话框,显示出这个叫张三的人的信息: 我们还可以看看对象的constructor属性来看看zhangsan的构造函数是不是我们定义好的Person: 结果如图: 可以看到,正是我们的Person构造函数。 不过,这里还是有点问题,每一次我们构造一个对象,都会在内存中为属性和方法分配内存空间,而事实上,所有的对象完全可以用同一个方法,并不需要有多个方法的副本,这样有些浪费内存空间。既然意识到了这个问题,让我们来想想如何解决吧。一个很自然的想法是,既然我们只想为方法分配一次内存空间,那么我们可以设置一个值用来标识方法的内存空间是否已经分配,按照这个思路,我们将构造函数做如下修改: 这里,我们用一个成员_initialized来指示是否已经对方法进行了内存空间的分配。当第一个对象构造的时候_initialized未被定义,所以我们的判断语句为真,这时会对方法进行了定义并分配内存空间,然后把_initialized的值设置为true,用以表明方法的内存空间已经分配了。第二个对象构造的时候则不会再进入判断,因而也不会再一次分配内存空间。似乎没什么问题,运行一下看看,张三的信息依然正常显示。虽然不辛苦,不过解决了一个小问题,还是庆祝下吧,来盘回锅肉,我要大快朵颐。还没开吃,一个叫李四的MM也想让电脑弹出她的个人信息。OK,很简单,再构造一个对象,然后调用showInfo方法就可以了: 为了照顾MM,还把这段放在了张三的前边。MM的信息正确显示出来了,可是张三的资料不见了。这下张三不乐意了,排名放在MM后边也罢了,但好歹得有名字啊。这可苦了我这编程人员,回锅肉看来没办法吃了,先改bug吧。打开firebug,看到MM的信息显示之后出现错误,提示为:zhangsan.showInfo is not a function。设置断点看看,构造zhangsi对象以后发现并没有showInfo这个方法。原来showInfo方法虽然只有一个,但是存在于第一个对象之中,第二个对象并不能访问。那么,究竟如何才能让同一个构造函数产生的对象共用同一个函数呢?javascript中的prototype给我们提供了这个功能。根据javascript的规范中描述,每一个构造函数都有一个prototype属性用于实现继承和属性的共享。我们的showInfo方法也可以看作是一个属性,该属性指向一个函数的引用。现在我们使用prototype来使得我们的方法可以共享,代码的改动很简单,把this.showInfo改成Person.prototype.showInfo就可以了,改动之后的代码如下: 使用该构造函数生成两个对象: 运行之后先显示李四的信息,然后是张三的信息。现在两个人都满意了,可惜我的回锅肉已经凉了

推荐整理分享面向对象的编程思想在javascript中的运用上部(面向对象的编程语言更适合大规模编程),希望有所帮助,仅作参考,欢迎阅读内容。

面向对象的编程思想在javascript中的运用上部(面向对象的编程语言更适合大规模编程)

文章相关热门搜索词:面向对象的编程方法的英文缩写是,面向对象的编程语言有哪些,面向对象的编程方法,面向对象的编程方法,面向对象的编程方法的英文缩写是,面向对象的编程思路,面向对象的编程思路,面向对象的编程思路,内容如对您有帮助,希望把文章链接给更多的朋友!

JS小框架 fly javascript framework 框架选择器部分兼容浏览器原生的查询语法,和jQuery大部分选择器,选择器部分文档大部分来自jQeruyAPI特点,选择器支持lambda表达式文件打包下载

JS类的封装及实现代码 1.定义js类js并不是一种面向对向的语言,没有提供对类的支持,因此我们不能像在传统的语言里那样用class来定义类,但我们可以利用js的闭包封装机制来实

javascript 面向对象全新理练之数据的封装 今天主要讨论如何在JavaScript脚本中实现数据的封装(encapsulation)。数据封装说的简单点就是把不希望调用者看见的内容隐藏起来。它是面向对象程序设

标签: 面向对象的编程语言更适合大规模编程

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

上一篇:Riot.js 快速的JavaScript单元测试框架(java script js)

下一篇:JS小框架 fly javascript framework(js框架开发实例)

  • 缴纳汇算清缴所得税怎么做账
  • 小微企业税收优惠政策2023年房产税
  • 个体户开票超过500万能注销吗
  • 销售使用过的汽车如何缴纳增值税
  • 企业文化事业建设费计算
  • 接受劳务是进项还是销项
  • 计提长期债券利息分录怎么做
  • 联营和合营的区别
  • 小规模纳税人开普票免税
  • 商场做促销
  • 传媒公司的成本构成有哪些
  • 个体户能不能去注销
  • 可以通过哪些渠道获得就业信息
  • 企业股权设计咨询这个行业怎么样
  • 政府收取的工程物资
  • 个人名下车辆过户
  • 补交以前年度工会经费所得税如何申报
  • 外挂项目跨年结转分录怎么做?
  • 娱乐行业缴税
  • 公司购进的商品自己用的,税金怎么走账
  • 视同买断委托代销如何确认纳税时间?
  • 劳务费和工资薪金合并计算个人所得税合适吗
  • 如何查看本机的ip 网关 和dns配置
  • 预付会议费会计分录
  • 外购商品可以直接结转成本吗
  • 投资收益借贷方向增减
  • 冲销上月多记收入
  • php中的事务使用是什么
  • 爱奇艺以图搜剧不见了
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • 中秋购物
  • 股东已转让股权还可以追究出资吗
  • johnny kim宇航员
  • PHP:imagecolorstotal()的用法_GD库图像处理函数
  • 免购车税政策
  • 银行汇票未用退回情况说明
  • 小规模纳税人超标认定一般纳税人
  • 皮丘拉湖畔的乌代布尔城市宫殿,印度 (© Chaiyun Damkaew/Getty Images)
  • 税务机关代小规模纳税人开发票
  • 税金及附加和营业收入有关系吗
  • 计提的附加税
  • webpack devserver contentbase
  • wordpress建立数据库错误
  • 月末库存商品结转成本怎么算
  • 暂估入库算材料成本差异吗
  • 企业所得税年报更正申报怎么操作
  • 个体户核定征收开票额度是多少
  • 个税申报怎样作废
  • sql2005服务无法启动sql安装方法
  • 物业公司广告费收入税率
  • 企业弥补亏损的会计分录
  • 企业所得税征前还是征后
  • 五险一金没有金
  • 研发支出计入产品成本吗
  • 合伙企业有限合伙
  • 装修费用一次性摊好还是分期好
  • 租入办公楼装修费按几年摊销
  • 公司运营成本如何计算
  • 剩余股利政策发放股利后的年末未分配利润
  • sqlserver中存储过程
  • mysql数据库输入汉字是问号
  • mysql查询慢的优化方案
  • ubuntu16.04开启远程桌面
  • 不能用鼠标
  • avgorange是什么文件
  • 云存储服务怎么打开
  • win10如何彻底关掉自动锁屏
  • Win8出现奇怪爆音的完美解决方法
  • Android从零单排02_Eclipse搭建Android环境01
  • Unity3D游戏开发标准教程
  • js中的call方法和apply方法
  • js的文件操作
  • unity2019texture
  • python中如何获取列表中位数
  • jquery defaultvalue
  • 个人所得税完税证明怎么开具
  • 广州市番禺区国丹信息管理有限公司
  • 山东省国税网
  • 环保税申报操作手册
  • 餐饮票抵扣成本怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设