星空网 > 软件开发 > Java

this call和apply

this指针总是指向一个对象,大致可以分为以下四种:

1,作为对象的方法调用(this指向该对象)

2,作为普通函数调用

    当函数不作为对象的属性被调用时,也就是普通函数方式,此时的this总是指向全局对象。在浏览器的javascript中,全局对象就是windows。 

this  call和applythis  call和apply
1 window.name='globaiName';2 var getName=function(){3   return this.name;4 };5 console.log(getName());

this指向全局对象

3,构造器调用

   javascript中没有类,但是可以从构造器中创建对象,同时也提供了new运算符,使得构造器看起来更像一个类。

   当用new运算符调用函数时,该函数总会返回一个对象,通常,构造器里的this就指向返回的这个对象

this  call和applythis  call和apply
var MyClass(){ this.name='sven';};var obj=new MyClass();alert(obj.name);

构造器里的this

  但是如果构造器显示的返回了一个object类型的对象,那么结果最终会返回这个对象。

this  call和applythis  call和apply
var MyClass(){ this.name='sven'; return {           //显示返回一个对象  name:'anne';}};var obj=new MyClass();alert(obj.name);      //输出anne              

构造器显示返回object类型对象

4,Function.prototype.call  和 Function.prototype.apply

  每个函数都具有call()和apply()方法,他们的作用一样,区别在于传入参数的形式不同。

  apply接受两个参数,第一个参数指定了函数体内this对象的指向,第二个参数作为一个带下标的集合,可以是数组,也可以是类数组。

  call传入的参数数量不固定,第一个参数指定了函数体内this对象的指向,从第二个参数开始,每个参数被依次传入函数。

  如果我们传入的第一个参数是null时,函数体内的this会指向默认的宿主对象,在浏览器中就是window。

this  call和applythis  call和apply
1 document.getElementById = (function (func){2   return function(){3     return func.apply(document,arguments);4 }5 })(document.getElementById);6 var getId = document.getElementById;7 var div = getId('div1');8 alert(div.id);              //输出div1

用apply来修正this指向

 




原标题:this call和apply

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

广运国际物流:https://www.goluckyvip.com/tag/101250.html
飞跃国际物流:https://www.goluckyvip.com/tag/101251.html
安高国际物流:https://www.goluckyvip.com/tag/101252.html
博扬国际物流:https://www.goluckyvip.com/tag/101253.html
二连国际物流:https://www.goluckyvip.com/tag/101254.html
赤道国际物流:https://www.goluckyvip.com/tag/101255.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.kjdsnews.com/a/1836547.html
春季热卖单品!空气净化器单周销售额近三十万!:https://www.goluckyvip.com/news/188215.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流