当前位置:首页 > 天道酬勤 > 正文内容

and i oop什么意思(紫jsoop免洗发膜)

张世龙2022年01月15日 05:35天道酬勤270

在这期间,我认识的学生已经工作了将近三年。 Java, net进行过开发。 去淘宝面试,回来后跟我说话,我很震惊。 说没有多少人面试他,对他的JavaScript语言很感兴趣,但问他的不是Jquery,也不是EasyUI,也不是ExtJs。 直接问JS最固有的特性和JS操作系统相关的东西,他做了多年的开发,平时熟悉jquery,对JS几乎都能使用,效果很好。 只要在网上找,拿来修改,想办法使用就行了,但对于JS的OOP,几乎不知道什么样的包、闭包、rrdlm链、JS的继承等,最终面试结果

其实,听了他的话,我一点也不奇怪。 目前的软件开发正在逐步向B/S端、移动开发方向发展,但无论在哪个方向,开发一些高性能、高质量的程序几乎都对JS有很高的要求。 虽然JS可能足以开发普通网站,但如果用户对体验的要求较高,则浏览器必须兼容,且需要特殊领域。 对于自行开发工作流或制作电路图的APP应用,对JS的要求相当高。 此外,这类工作人员的工资也相当高。 无论是哪个Web开发达人,还是Web开发的老鸟,都要求对JS非常熟悉。 熟悉的前提是理解并使用JS OOP进行客户端技术开发。

我有幸在10年前从事纯客户端产品的开发,很快接触到JS和JS OOP,对这方面有自己的研究和心得。 网上这方面的资料很多,但我觉得不系统,不完整,不系统。 接下来,整理一下网络资料,给很多没有接触过JS操作系统概念的朋友们,看看什么是JS操作系统,它的封装,它的

一、必须知道

1 )字面量

2 ) rrdlm

3 ) rrdlm链

4 )构造函数

5 )稳妥对象(无公共属性,且其方法也不引用this对象。 稳妥的对象适用于安全环境或防止其他程序更改数据。)

二.开始制作对象吧

1:首先,让我们看两种创建最基本对象的方法

使用Object创建对象

2使用对象文字创建对象

但是,这两种方法有明显的缺点。 使用同一接口创建许多对象会生成大量的重复代码。

2接下来,让我们来看看创建对象的几种模式

1工厂模式

工厂模式也有缺点。 就是没有解决对象识别的问题。 也就是说,如何知道对象的类型。

2构造函数的模式

构造函数模式也有缺点。 这意味着必须为每个方法的每个实例创建一次。

当然,可以在上面两行中注释掉代码,以掩盖上面的缺点。

但是……,我们又产生了新的问题——全局变量。 如果有很多方法,不是要定义很多全局变量函数吗? 这是一个可怕的问题。

3 rrdlm模式

1 )普通方法

2 ) rrdlm字面测量方法——我先这么叫吧

rrdlm的缺点:

1 ) :不能传入

2 ) :共享了变量

构建rrdlm (模式)

该模型是创建当前使用最广泛、认同度最高的自定义类型的方法。

5动态rrdlm模式

这个方法确实也是完美的方法。

6寄生结构函数模式

="https://p5.toutiaoimg.com/origin/119300023660349ea0d0?from=pc">

注意那个return o。构造函数在不返回值的情况下,会返回新对象实例。而通过在构造函数的末尾加入return 语句,可以重写调用构造函数时返回的值。

这个种用法可以用在,假设我们想创建一个具有额外方法的特殊数组。由于不能直接修改Array的构造函数,因此可以使用这个模式。

7>稳妥构造函数模式

稳妥构造函数遵循与寄生构造函数类似的模式,但是有两点不同:

一是新创建对象的实现方法不引用this

二是不使用new操作符调用构造函数。

二、JS继承的6种方法

1> rrdlm链继承

rrdlm链继承是通过创建Super的实例,并将该实例赋值给Sub.prototype来实现的。

实现的本质是:重写子类型的rrdlm对象,代之以超类型的实例。

注意:此时instance.constructor现在指向的是Super的,这是因为Sub.prototype指向了Super.prototype,而Super.prototype.constructor = Super。

rrdlm链的问题:类似于利用rrdlm创建对象,rrdlm共享的特性也是rrdlm链继承的最大问题。

2> 借用构造函数继承

在解决rrdlm中包含引用类型值所带来的问题的过程中,我们****始使用一种叫****借用构造函数的技术。

这种技术的基本思想相当简单:在子类型构造函数的内部调用超类型构造函数。

这样一来,就会在新子类对象上执行超类函数中定义的所有对象初始化代码。结果,每个子类的实力都会有自己的超类中属性的副本了。

借助构造函数继承的问题:

1): 方法都在构造函数中定义,无法复用。

2): 在超类型的rrdlm中的方法对子类是不可见的。

3> 组合继承(rrdlm+借用构造)

组合继承指的是将rrdlm链和借用构造函数的技术组合到一块,从而发挥二者之长的一种继承模式。

组合继承的思路:使用rrdlm链实现对方法和属性的继承,通过借用构造函数实现对实例属性的继承。

组合继承避免了rrdlm链和借用构造函数的缺陷,融合了他们的优点,成为J****aScript中最常用的继承模式。

组合继承的问题:两次调用超类构造函数。

4> rrdlm式继承

rrdlm式继承的思路:借助rrdlm可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。

rrdlm式继承的问题:同rrdlm链一样,他也有共享的劣势。

5> 寄生式继承

寄生式继承的思路:创建一个仅用于封装继承过程的函数,该函数内部以某种方式来增强对象,最后再返回该对象

寄生式继承的问题:像构造函数一样,由于不能****到函数的复用而降低效率。

6> 寄生组合式继承

寄生组合式继承:通过借用构造函数来借用属性,通过rrdlm链的混成形式来继承方法。

其背后的思想是:不必为了指定子类型的rrdlm而调用超类型的构造函数,我们需要的无非就是超类型的一个副本而已。

开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。

三、总结

这就是JavaScript中的6种继承方式,如果大家能够画出每个继承的rrdlm链关系图,那么继承就是小菜一碟了

了解了这些,你基本上对OOP有了一个入门,补充说明,以上内容均来自互联网,非本人原创。不过可能对于JS OOP重来没有接触过的同学看起来还是会觉得有些吃力,我最近也在整理这方面的资料并录制相关方向的课程,有兴趣的同学加群142991222交流学习,目录列下:

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://zhangshilong.cn/work/43826.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。