首页 » PHP教程 » phpjs扩大技巧_JS从入门到不放弃六面向对象高级扩展

phpjs扩大技巧_JS从入门到不放弃六面向对象高级扩展

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

上一章节我大概剖析了一下面向工具的基本特点以及高等用法。
比如jQuery的插件扩展事理实在便是在类的原型上扩展方法。

本章目标ECMAScript内置类的扩展从ES5面向工具向ES6过渡ECMAScript内置类的扩展

1、数组类的扩展

phpjs扩大技巧_JS从入门到不放弃六面向对象高级扩展

在JS中,数组类Array 作为一个比较主要的数据构造。
我们来看下它的原型下都有些什么?

phpjs扩大技巧_JS从入门到不放弃六面向对象高级扩展
(图片来自网络侵删)

我们在浏览器掌握台打印Array.prototype 可以列出来它的所有的方法。

实在有一些方法可能很实用,但是它没有供应,这时候便是须要我们自己去做一下扩展了。

比如,数组的去重。
我们给Array的原型上扩展一个unrepeat方法。

一样平常来说,为了避免我们自定义的方法与Array的内置方法冲突。
我们该当这样做。

这里须要把稳的是在扩展的自定义方法unrepeat里面的this指向的便是数组工具本身。
实在便是我们在类的原型下访问this ,这个this便是指向的类的实例工具,即 [1,2,3,4,1,2,3,4]

再来举个例子:清空数组

2、函数类的扩展

我们在JS中定义函数常日以function fn(){}这样来定义一个函数,实在我们也可以通过new Function来创建,只是不建议,以是我们知道,函数也有对应的类该当便是Function。

接下来我们通过扩展Fucntion原型方法去变动this的指向。

变动this的指向?

没错!
在JS中,我们不是已经可以用call和apply来改变this的指向吗?接下来要实现的和call、apply不太一样。

call和apply在改变this指向的时候,会立即调用该函数。
而我要实现的是在调用的时候才会去改this指向。

实在这一功能在我们的ES5中已经现成的方法 bind

我们先来看下在Es5中bind的用法,然后我们去实现一个和bind一样的功能的方法。

当我们直接调用test的时候,这时候,实在我们是调用的window.test 那么方法里面的this该当便是指向的window工具。

而当我们在调用test之前利用了bind去将this指向改成了json工具,这时候test方法里面的this就指向了json工具,那么再去访问this.a 便是相称于json.a 结果返回123

接下来我们手动撸一个这样的自定义函数bind1.

Function.prototype.bind1 = Function.prototype.bind1 || function(_this){}

内部事理实在便是通过原生的apply来改变this指向,但是不立即调用,以是我们须要返回一个新的函数。

这里面涉及到了部分的ES6语法,这里就不展开了。

这里面有一个问题:我们返回的function 是一个匿名函数,我们须要将他的原型指向外层函数的原型,同时还须要指定匿名函数的constructor

接下来我们来改造一下它

到这里,我们自定义的bind1函数就完美实现啦。

从ES5面向工具向ES6过渡

在ES6之前,虽然说没有给我们供应类的直接定义,但是却将class关键字保留出来了,而在新的ES6标准中,已经为我们实现的用class来定义一个类

语法:

这种定义方法和java、php很相似了。
render方法为我们自定义的方法,在ES5中相称于是挂载到原型上的方法了。

把稳:这里我们在实例化类的时候,是直接调用的constructor布局方法。
思考一个问题:

当我们typeof Ball的时候,会返回什么?

ES6类的继续

比较于ES5的继续,在ES6就大略多了,我们只须要在类的后面加上 extends 关键字然后再跟上要继续的父类即可。
我们可以这样写

这继续和php,java一个样儿

把稳:我们在继续父类的时候,子类中的布局方法中必须调用super()方法

总结:

1、基于面向工具特点扩展原生的JS类的方法

2、手写出了自定义的bind函数,(这也是口试过程中的高频口试题)

这里是【畅哥聊技能】JS从入门到不放弃干系技能文章,本章节是末了一章,更多精彩专题持续更新中。

(全章完)

标签:

相关文章

php下架技巧_紧急回应整改下架

:“中国人是天下上最不老实的人,最虚伪的人”—— 这句令人震荡的话语,竟出自一款面向儿童的智好手表。近日,小天才、360等品牌的儿...

PHP教程 2024-12-15 阅读0 评论0

定制php小偷技巧_PHP采集 抓取

一、 什么是php采集程序?二、 为什么要采集?三、 采集些什么?四、 如何采集?五、 采集思路六、 采集范例程序七、 采集心得什...

PHP教程 2024-12-15 阅读0 评论0