html_继承

继承

原型继承

借用构造函数

实行结果:

组合继承

注解:

  1. 有两个定义类的构造函数
  2. 子类(构造函数中)借用构造函数调用父类构造器,在使用prototype定义父类(一定要设置constructor

定义函数的方式

函数声明和函数表达式的区别

函数中的this

1.函数中的this           window

2.方法中的this           调用方法的对象  

3.构造函数中的this    通过构造函数创建的对象

4.事件处理中的this    触发事件的对象

5.定时器执行的function中的this    window

 

改变this的方法

callapplybind(不调用函数,但改变内部的this

ECMAScript规范为所有函数都包含两个方法(这两个方法非继承而来), call  apply 。这两个函数都是在特定的作用域中调用函数,能改变函数的作用域,实际上是改变函数体内 this 的值

语法

定义

说明

call(thisObjObject)

调用一个对象的一个方法,以另一个对象替换当前对象。

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj

apply(thisObj[argArray])

应用某一对象的一个方法,用另一个对象替换当前对象。

如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray thisObj 任何一个参数,那么 Global 对象将被用作 thisObj 并且无法被传递任何参数

区别

  • 参数不同, apply 传入的是一个参数数组,也就是将多个参数组合成一个参数数组, call 从第二个参数开始依次传入.
  • apply 可以直接将当前函数的arguments对象作为apply的第二个参数传入

call apply 最大的好处:方便我们解耦,对象不需要和方法有任何的耦合性,能使我们写出更好的面相对象程序。

Apply

让数组的每一项做为方法的参数

在伪数组使用数组的方法

对象内部使用定时器的this

setInterval(function(){}.bind(obj),150)

事件处理函数中的this

Btn.onclick = function (){}.bind(obj);

函数对象的成员

函数做为参数

函数作为返回值

猜你喜欢

转载自blog.csdn.net/jss19940414/article/details/85036892