04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)

1、构造函数方式

定义一个函数,然后实例化即可。

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第1张图片

2、原型对象方式

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第2张图片

这种方式真正的弊端是如果原型对象中有一个引用类型的值则修改其中一个实例对象另一个也会修改

3、混合方式定义

思路是将函数类型的成员绑定到原型对象上将其他值绑定到构造函数内部

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第3张图片

实际开发中推荐使用这个方式

4、动态混合方式

上面的混合方式,从功能和性能上已经没有问题了,但是从结构上看起来不像PHP中的类,所以希望将所有的成员属性和方法的代码都放到一个大括号中,所以才会出现下面的动态混合方式。

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第4张图片

九、函数进阶

1、函数也是值

JavaScript 语言将函数看作一种 ,与其它值(数值、字符串、布尔值等等)地位相同。凡是可以使用值的地方,就能使用函数。比如,可以把函数赋值给变量和对象的属性,也可以当作参数传入其他函数,或者作为函数的结果返回。函数只是一个可以执行的值,此外并无特殊之处。

由于函数与其他数据类型地位平等,所以在 JavaScript 语言中又称函数为 第一等公民

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第5张图片

除此以外,还可以把函数当做返回值。

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第6张图片

也可以把函数当做另外一个函数的参数,如果一个函数当做另一个函数的参数了,那么把函数类型的参数叫做回调函数

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第7张图片

2、函数也是对象

JS中处处皆对象,函数也不例外。

那么如何理解函数也是对象呢?这里主要要表达的是函数也可以使用对象那样的点语法。比如前面学习的Person.prototype;

比如在函数内部,可以使用“函数.length”来表示函数的形参个数,可以使用“函数.name”来获取当前的函数名。

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第8张图片

3、arguments对象

arguments对象,存在于函数的内部,它能够表达函数的实际参数(实参),除此以外,arguments对象还有一个属性callee,它表示函数的名字,arguments的length属性表示实参的个数。

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第9张图片

小例子:计算函数参数的和:

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第10张图片

4、call、apply、bind函数

这三个函数都可以改变函数内部this的指向。

函数.call(需要指向的对象,参数1, 参数2…);  调用之后,会直接执行函数

函数.apply(需要指向的对象,[参数1, 参数2…]); 调用之后,会直接执行函数

函数.bind(需要指向的对象,参数1, 参数2…);  调用之后,不会执行函数。

call方法演示:

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第11张图片

apply方法演示:

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第12张图片

bind函数演示:

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第13张图片

小例子,查找数组中的最大值:

04JS第八天 ----- js高级第二天 --- 定义对象进阶 +函数进阶(高级第二天结)_第14张图片

在线文档:https://docs.qq.com/doc/DQWxicWdTd0ROWVdN

你可能感兴趣的:(04js)