位置: 编程技术 - 正文

浅谈JavaScript实现面向对象中的类(简述javascript)

编辑:rootadmin

推荐整理分享浅谈JavaScript实现面向对象中的类(简述javascript),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript现状,javascript的理解,js类的实现,javascript简述,javascript概述,细说javascript,js的实现原理,js的实现原理,内容如对您有帮助,希望把文章链接给更多的朋友!

对象,是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。--引自百度百科

面向对象编程,是当前最流行的编程模式。但令人沮丧的是,作为前端应用最为广泛的javascript,并不支持面向对象。

javascript没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用 来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定 义,并创建对象。

定义类并创建类的实例对象

在Javascript中,我们用function来定义类,如下:

你或许会说,疑?这个不是定义函数吗?没错,这个是定义函数,我们定义了一个Shape函数,并对x和y进行了初始化。不过,如果你换个角度来 看,这个就是定义一个Shape类,里面有两个属性x和y,初始值分别是1和2,只不过,我们定义类的关键字是function而不是class。

然后,我们可以创建Shape类的对象aShape,如下:

定义公有属性和私有属性

我们已经创建了aShape对象,但是,当我们试着访问它的属性时,会出错,如下:

这说明,用var定义的属性是私有的。我们需要使用this关键字来定义公有的属性。

这样,我们就可以访问Shape的属性了,如:

好,我们可以根据上面的代码总结得到:用var可以定义类的private属性,而用this能定义类的public属性。

定义公有方法和私有方法

在Javascript中,函数是Function类的实例,Function间接继承自Object,所以,函数也是一个对象,因此,我们可 以用赋值的方法创建函数,当然,我们也可以将一个函数赋给类的一个属性变量,那么,这个属性变量就可以称为方法,因为它是一个可以执行的函数。代码如下:

我们在上面的代码中定义了一个draw,并把一个function赋给它,下面,我们就可以通过aShape调用这个函数,OOP中称为公有方法,如:

如果用var定义,那么这个draw就变成私有的了,OOP中称为私有方法,如:

浅谈JavaScript实现面向对象中的类(简述javascript)

这样就不能使用aShape.draw调用这个函数了。

构造函数

Javascript并不支持OOP,当然也就没有构造函数了,不过,我们可以自己模拟一个构造函数,让对象被创建时自动调用,代码如下:

在Shape的最后,我们人为的调用了init函数,那么,在创建了一个Shape对象是,init总会被自动调用,可以模拟我们的构造函数了。

带参数的构造函数

如何让构造函数带参数呢?其实很简单,将要传入的参数写入函数的参数列表中即可,如:

这样,我们就可以这样创建对象:

静态属性和静态方法

在Javascript中如何定义静态的属性和方法呢?如下所示:

有了静态属性和方法,我们就可以用类名来访问它了,如下:

注意:静态属性和方法都是公有的,目前为止,我不知道如何让静态属性和方法变成私有的~

在方法中访问本类的公有属性和私有属性

在类的方法中访问自己的属性,Javascript对于公有属性和私有属性的访问方法有所不同,请大家看下面的代码:

this的注意事项

根据笔者的经验,类中的this并不是一直指向我们的这个对象本身的,主要原因还是因为Javascript并不是OOP语言,而且,函数和类均用function定义,当然会引起一些小问题。

this指针指错的场合一般在事件处理上面,我们想让某个对象的成员函数来响应某个事件,当事件被触发以后,系统会调用我们这个成员函数,但是,传入的this指针已经不是我们本身的对象了,当然,这时再在成员函数中调用this当然会出错了。

解决方法是我们在定义类的一开始就将this保存到一个私有的属性中,以后,我们可以用这个属性代替this。我用这个方法使用this指针相当安全,而且很是省心~

我们修改一下代码,解决this问题。对照第六部分的代码看,你一定就明白了:

以上我们聊了如何在Javascript中定义类,创建类的对象,创建公有和私有的属性和方法,创建静态属性和方法,模拟构造函数,并且讨论了容易出错的this。

关于Javascript中的OOP实现就聊到这里,以上是最实用的内容,一般用Javascript定义类,创建对象用以上的代码已经足够 了。当然,你还可以用mootools或prototype来定义类,创建对象。我用过mootools框架,感觉很不错,它对Javascript的类 模拟就更完善了,还支持类的继承,有兴趣的读者可以去尝试一下。当然,如果使用了框架,那么在你的网页中就需要包含相关的js头文件,因此我还是希望读者 能够在没有框架的情况下创建类,这样,代码效率较高,而且你也可以看到,要创建一个简单的类并不麻烦~

浅谈JavaScript函数节流 浏览器中某些计算和处理要比其他的昂贵的多。例如,DOM操作比起非DOM交互需要更多的内存和CPU时间。连续尝试进行过多的DOM相关操作可能会导致浏览

WEB前端设计师常用工具集锦 下面是我整理和收集的一些前端开发常用的插件、工具、软件等不为别的,相当于给电脑做个小备份,至于使用方法,以后我会总结,目前的话还是自

BAT及各大互联网公司前端笔试面试题--JavaScript篇 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正。附上第二篇:BAT及各大互联网公司前

标签: 简述javascript

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

上一篇:Javascript的闭包详解(js中闭包)

下一篇:浅谈JavaScript函数节流(简述javascript中的函数)

  • 结转应交增值税是什么意思
  • 可供出售金融资产会计处理
  • 销售货物和服务流程 事前检查单上
  • 鉴证服务的税率有哪些
  • 小规模销售免税农产品的分录
  • 小规模纳税人水利基金怎么报税
  • 进项税额计入其他应付款是什么意思
  • 支付的保证金
  • 有哪些税收政策类型
  • 留存收益总额不变
  • 持有至到期投资科目被取消了吗
  • 购买空调的报销单怎么写
  • 印刷品生产需要生产许可证吗?
  • 所得税汇算期间费用填列说明
  • 金蝶软件如何成批反审核
  • 公司之间借款收据要领导签字吗
  • 使用专项资金购买的固定资产 需要取得发票吗
  • 税收滞纳金可以税前扣除吗
  • 专用发票验旧后还领不到发票
  • 未计提印花税会计分录
  • 公司哪些发票可以做成本或者费用
  • 在建工程会计科目
  • 生产性企业购买粽子可以开专票吗
  • 在win7系统中,怎么把D盘里的文件移到C盘里?
  • win11怎么安装CAD2008
  • macOS 11 Big Sur beta 4值得升级吗?macOS 11 Big Sur beta 4更新详解
  • Qq浏览器里的文档怎么以文件形式发送
  • 代发工资跨行手续怎么办
  • fte文件怎么打开
  • 税款滞纳金会计科目
  • php读取txt内容
  • 从上魏斯巴赫山地列车的车站向外看,德国图林根 (© golero/iStock/Getty Images Plus)
  • php全局变量和局部变量
  • vue实现瀑布流布局
  • 税票报税怎么弄
  • 新政府会计准则三大特点
  • html文档基本结构包括哪几部分
  • el-upload上传文件携带参数
  • 简易计税适用什么类型企业
  • 汽车销售税额
  • 没有综合所得的经营所得如何预扣预缴个税
  • C++ lower_bound/upper_bound用法解析
  • 代收代付保险费分录
  • mysql查询语句慢怎么优化
  • 小规模可以不用软件做账吗
  • 怎么判断其他债权债务
  • 如何根据科目余额表做资产负债表
  • 公司买车赠送给个人,怎么交税
  • 租户押金抵房租
  • 农民扶贫款到哪去领
  • 租金收入确认收入时间
  • 职工体检可以从工会经费支出
  • 变更法人需要什么条件
  • sqlserver存储过程在哪里
  • solaris date命令
  • 更新最新版win11,任务栏不见了
  • winxp系统怎么投屏
  • ie10工具栏在哪
  • win7系统如何隐藏任务栏
  • 怎么更改win7
  • linux的问题
  • win7暗藏的超实用快捷键汇总
  • windows8.1界面
  • win10输入框在哪里
  • win7系统监控
  • linux 使用
  • w10文件预览
  • dos批处理实例
  • android 动态布局
  • 学习标准——笔记
  • 批处理文件是将需要连续使用的可多次重复使用的
  • 你miu的
  • shell字符串操作
  • unity3d怎么编程
  • jquery html函数
  • js easyui
  • android如何使用
  • 国家税务局科员属于什么级别
  • 浙江省工会经费减免最新政策2019年
  • 地方税务局是事业单位吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设