- javascript中this的指向有4种情况:
- 1.作为普通函数调用:
this
指向全局对象 - 2.作为对象方法调用:
this`
指向该对象 - 3.构造器调用: this指向构造器返回的对象
- 4.
Function.prototype.call
和Function.prototype.apply
调用:this
指向动态传入的对象
- 丢失的this
- 例子:
document.getElementById
这个函数名字太长,可以使用一个短点的函数来代替,例如prototype.js做法:
1 | var getId = function (id) { |
- 注意: 使用下面的方式是错误的!!!!!!!
var getId=document.getElementById;
错误做法!!!- 因为
document.getElementById
这个方法的实现需要使用this指针,this指针期望指向document对象, - 而这种做法作为普通函数调用,this指向了全局对象,即window,所以会出错!!
可以使用apply传入document来帮助修正this:
1 | document.getElementById = (function (func) { |