位置: 编程技术 - 正文

浅谈Javascript面向对象编程(javascript面向过程)

编辑:rootadmin
在JS中充分使用面向对象设计思想,可以极大限度的提升代码重用、降低模块间的偶合、更好的逻辑分层与并行开发。下面分几个步骤简单谈下我的理解。 一、数据类型与包装类 包装类 …… 类型名 …… 常见值 …… 分类 Number …… number …… . …… 基本数据类型 Boolean …… Boolean …… true、false …… 基本数据类型 String …… string …… “hello world!” …… 基本数据类型 Object …… object …… {}、[] …… 复合数据类型 Function …… function …… function(){} …… 特殊类型 无 …… undefined …… undefined、未定义 …… 小数据类型 无 …… null …… null …… 小数据类型 内置类型与本文关系不大,不列出。 二、引用类型与值类型 引用类型:object function 值类型:number、boolean、string、null、undefined 三、new function(构造器)与prototype(原型) 关于prototype的设计模式就不多说了,网上很多介绍,以一个例子介绍一下js中使用new构造对象的过程。 function classname(){this.id=0;} var v=new classname(); 当使用function构造对象时,进行以下流程: 1、 查找classname的prototype,并进行浅拷贝。 2、 绑定this指针到拷贝来的对象。 3、 将this.constructor属性设置为classname。 [注:其实classname.prototype.constructor的值也被设置为classname,第六部分会说明] 4、 执行用户{}中的代码。 5、 返回this指针赋予左值v。 四、实现面向对象的三个基本特征 1、 封装 封装这个大家都明白,在js中,重点在于访问权限。在其他原生支持面向对象语言中,一般支持public、protected、private三个关键字来控制访问权限,但在js中,我们只能依靠复杂的作用域关系来控制: [!]非常需要注意的就是,因为function是引用类型, classname.prototype.func是所有对象共享的一个function对象(每个对象仅存着引用),因此对象规模不大。而使用this.getuid和this.setuid为定义一个function,因此每个对象实例都会存一份,如果放肆使用这种方法,会造成对象规模庞大,影响性能。个人认为模拟private变量的意义不大。 [!]如果有需求真的需要大量使用this.xxx=function(){}这种情况,在function(){}中的this指针与最外的this指针是不同的,最好在类定义的首行加上var _this=this;,这样在this.xxx=function(){}中也可以方便使用绑定的指针。 2、 继承 继承的实现,主要有2种方法:第一种是使用javascript本身的原型模型,通过给prototype赋值并改变其constructor属性来实现继承;第二种方法是不使用prototype,手动实现将父对象的所有属性方法深拷贝到子对象。比如A需要继承B,第一种写法可以:A.prototype=new B();A.prototype.constructor=A; 第二种写法可以写一个递归,或者使用jquery中的方法extend。另外,如果要实现多继承的话,prototype就真的好麻烦了(需要依次多个类,还要建空对象来接),第二种方法就比较简单,依次拷贝即可。一般这种继承为了找父类方便,可以在对象中加个属性,引用父类。 3、 多态 函数重载就不说了,都会,检查参数即可,很灵活。隐藏属性就是直接赋值undefined。需要注意的是,如果是打算继承B类的prototype,一定要建一个空对象来接,否则的话,你给类写方法的话,相当于直接修改了prototype,就算不写方法,你最后修改constructor时也会造成继承链错乱,接个空对象很容易: 这样再让需要继承B.prototype的类继承obj即可,即便修改prototype也不会影响到B。而且也不像继承new B()那样浪费很多空间。 五、深拷贝与浅拷贝 这个和其他语言中没什么区别,浅拷贝就是直接拷贝,遇到引用类型或类类型不再深入。深拷贝则是根据类型判断,进行递归拷贝。 六、prototype.constructor 这个值主要是用于维护继承的原型链。一篇文章已经写的非常详细,请参考: 七、JS的面向对象开发 由于我不是前台开发人员,见过项目有限,仅谈自己的经验。 我开发过的B/S,常用两种架构,一种是以CGI为主,由后台语言去生成HTML,JS仅仅做一些用户交互,ajax通信等。另外一种是使用MVC,后台语言仅仅生成JSON,View层完全由JS组件在客户端实现。后者一般大量使用面向对象的思想进行编程,将组件封装成类,将JSON传入构造函数,再由控制器或布局组件Add进来。由于组件可以重用,在开发后台管理系统、JS游戏上,效率还是很可观的。

推荐整理分享浅谈Javascript面向对象编程(javascript面向过程),希望有所帮助,仅作参考,欢迎阅读内容。

浅谈Javascript面向对象编程(javascript面向过程)

文章相关热门搜索词:js常见的面试题,js常见面试题,js界面,javascript的面向对象,javascript面向,javascript面向对象编程指南,javascript面向对象编程指南,javascript面向,内容如对您有帮助,希望把文章链接给更多的朋友!

javascript面向对象编程代码 varorchard=function(){//基类型构造函数代理静态方法都在代理函数上this.constructor&&this.constructor.apply(this,arguments);};orchard.extend=function(){varparentObj=this;varparameters

Javascript面向对象设计一 工厂模式 1、工厂模式抽象了创建具体对象的过程,但是在ECMAScript中无法创建类,所以就使用一种函数来封装以特定接口创建对象的细节。以一下情况为例,有一

JavaScript面向对象设计二 构造函数模式 我们将使用构造函数模式将工厂模式进行改写。functionEmployee(name,age,job){this.name=name;this.age=age;this.job=job;this.sayName=function(){alert(this.name);};}varJim=newEmployee("j

标签: javascript面向过程

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

上一篇:JavaScript 类型的包装对象(Typed Wrappers)(javascript有哪些常用的属性和方法)

下一篇:javascript面向对象编程代码(javascript面向对象精要pdf)

  • 增值税申报表出口退税
  • 核定征收企业所得税率是多少
  • 实收资本一直挂着其他应收款怎么办
  • 减免税款借贷方表示
  • 股东无偿借款给公司需要交税吗
  • 本月出库金额等于什么
  • 预付房租的会计科目
  • 检测样品留样期限
  • 销售加工费怎么做账务处理
  • 发票折扣有没有限制
  • 计提的利息汇算清缴前没发放,需要交企业所得税吗
  • 超过一年的保证金怎么交个税
  • 公司进项票不够怎么回事
  • 甲公司采用租赁方式租入一台大型设备
  • 个人所得税免税收入怎么填纳税申报表
  • 注销公司账不平怎么办
  • 汇兑损益计算例题
  • 没有预付账款科目计入哪里
  • 销售折让发票如何处理?
  • 补缴房产税需要什么资料
  • 福利费应计入什么费用
  • 1697510649
  • 无线路由器1200m覆盖范围
  • 屏幕乱跳广告解决办法
  • 认缴出资额和实缴出资额的时间
  • win10电脑屏幕颜色变了怎么调到原来的
  • Yii2隐藏frontend/web和backend/web的方法
  • linux系统设置中文语言
  • 普通发票主营业务收入销项负数发票怎么做账
  • 权益法转成本法为什么用账面价值
  • 利息收入可以冲减研发费用
  • php ssl
  • webpack--》webpack底层深入讲解,从初识到精通,真正实现从0到1的过程
  • 什么情况下要预提集装箱
  • 无限极分类mysql
  • thinkphp框架怎么用
  • php数据库分页是怎么实现的
  • 前端get请求传数组
  • trainer 平替
  • 机器学习中的数学原理——模型评估与交叉验证
  • 社保费已扣为什么显示欠缴
  • 帝国cms标签调用大全
  • python中numpy数组和列表的区别
  • Linux sqlite3 基本命令
  • 工程施工与工程结算对冲分录
  • 应收账款属于供应商还是客户
  • 公户直接转给私人账户违法么
  • 个体经营部能抵扣个税吗
  • 其他应收款增加会计分录
  • 资产减值损失应计入什么科目
  • 对公账户一直没有对账,会有什么后果吗?
  • 个税手续费返还比例
  • 日用品办公用品的经营范围
  • 退回的保证金多了一点怎么做分录
  • 企业实缴资本如何查
  • 其他债权投资计提损失准备会引起资产总额增加吗
  • 购买设备的运费增值税计入成本吗
  • 财产清查存在的问题及原因分析
  • 人工成本包括哪些项目
  • mysql数据库详解
  • sql 常用语录
  • mssql数据库的账号密码
  • sql怎么分组查询
  • win7系统如何打开
  • win7网络不好怎么办
  • 在unix系统中采用的页面置换
  • ubuntu20.04配置
  • media.codec是什么软件
  • vncviewer连接linux
  • opengl opengl es
  • 批处理命令是什么语言
  • 批处理计算的特点
  • python编程入门指南
  • python模板引擎开发
  • 细说javascript
  • python基于django的项目
  • 临时占地耕地占用税纳税义务发生时间
  • 如何查询契税是否逾期
  • 非涉密网络严禁什么
  • pcie3.0*4接口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设