度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1941|回复: 3
打印 上一主题 下一主题

[分享] 我对面向对象的深刻理解

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
跳转到指定楼层
楼主
发表于 2020-6-28 18:07:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们之前已经对对象有所了解了,现在我们来说一下面向对象。

我对面向对象的认识是这样的,所谓的面向对象就是在不懂内部原理的情况下,对它的一个使用。比如在我们的生活中,

去餐厅吃饭时,我们仅只给厨师报上菜名,厨师就会把菜做出来,不需要去告诉厨师要怎样去做,用什么做,这就是面向对象

。万物皆对象,对象就是由属性和方法组成的。面向对象有三大特征,分别是封装,继承和多肽。

面向对象面向的是class,面向的是类,而在我们js中是没有class没有类的,它基于的原型。创建对象的方法有很多种

,最常用的有6种,分别是字面式、new Object()、工厂方式、构造函数式还有原型链创建的对象,最后一种是混合式创建,

就是构造函数和工厂方式组合在一起创建出来的对象。创建好对象之后我们就可以往里面添加属性了,我们可以利用this来添

加属性,但是我们在使用原型链创建出来的对象就要用prototype这个属性去添加了。每个函数都有一个属性叫做prototype。

这个prototype的属性值是一个对象,默认的只有一个叫做constructor的属性,指向这个函数本身。之后我们在创建好对象之

后,我们在调用对象的时候和其他的也是一样的new一个对象出来,这个对象的名称一旦使用,比如说var obj=new Object()

这个obj其实指向对象的内存地址的一个引用,引用可以调用对象里的属性和方法。

下面再来说一下js中面向对象的三大特征,封装,闭包是封装的最好体现,说起封装让我们不得不回想起变量,变量分为

全局变量和局部变量,全局变量比较简单,它可以在任何地方访问到,麻烦就麻烦在局部变量,局部变量一般在函数外是访问

不到的,这时候我们就可以用闭包了,我们在函数内部在来一个函数,这个函数称为二次函数,我们一般分为父函数和子函数

,子函数可以访问到父函数中的变量以及方法,我们称这个子函数为特权函数,闭包在我们的使用时应该尽量的少使用它,因

为它会占用内存,导致内存的泄漏,造成系统的崩溃,如果我们使用了的话,可以用标记清除或者引用计数的方法来清除。然

后就是继承,继承有三种方式 一种是原型链继承、另一种是构造函数式继承,最后一种是混合继承。我们刚才说过,子函数

可以访问到父函数的属性和方法,在原型链继承中,子对象有一个默认的属性叫__proto___,他指向的是这个方法的本身,而

这个方法的本身是不具有父方法的方法以及属性的,所以得调用它的prototype的属性,这个prototype属性又指向一个对象

,这个对象又是子方法的原型,那么这个原型他又是用父方法实例化出来的,所以又是他父对象的__proto__,这个__proto__

又指向的父对象本身那个prototype,这个prototype又调用他里面的属性和方法,这样的话就是他的原型链继承。构造函数式

继承最重要的一点就是冒充,父对象定义在子对象里面,在子对象里面可以引用父对象的属性和方法,在构造函数中有三个参数

需要注意一下,call apply aruments call和apply两种方法虽然都是继承属性,但书写格式存在不同这里call方法是通过this

后跟着一个字符串系列而apply方法同样也是通过this 不过传属性则是由数组构成,而argument中有两个属性分别是返回执行

函数本身的callee 还有一个形参的个数length,最后一种混合继承就比较简单了,就用构造和原型混用的方式来实现继承的。

最后一个特性是多肽就是一种食物的多种形态,允许将子类型的指针复制给父类类型的指针。

面向对象在实际中用来最多的是写插件、组件 写插件的一般步骤是定义一个原型,然后按照要求创建DOM元素,用原生或

js动态地去添加事件和方法,不过特殊事件要特殊处理,比如屏幕事件,屏幕的距离就要特殊处理,面向对象是一种通用思想

,并非只有编程中能用,在任何地方都可以用,面像对象提高了代码的复用性和可扩展性但是却降低了性能。

以上就是我对面向对象的理解,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
沙发
 楼主| 发表于 2020-6-28 18:07:37 | 只看该作者
回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
板凳
 楼主| 发表于 2020-6-28 18:08:39 | 只看该作者
回复

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
地板
发表于 2020-6-30 14:11:16 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-28 06:02 , Processed in 0.129285 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表