打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
javascript基础之我见(2)----一句话搞定this,并浅析js,as相互调用的this问题

        在写js的时候,我们往往会遇到this的概念,this的指向,总会让人很头痛。今天根据我对this的理解,和一些经验,来用一句话总结下this。那么这句话就是:

   this在有函数调用者时指向调用者否则指向GLOBAL,call、apply除外。

    那么,我们通过一个例子来理解并记住这句话:

 1 function test(){ 2     console.log(this); 3 } 4 test();//Window 5 var th = {}; 6 test.call(th)//th 7 test.apply(th)//th 8 var a = function(){ 9 }10 a.test = test;11 a.test();//Function a12 a.prototype = {13     test : test14 }15 var b = new a();16 b.test();//b;17 a.prototype.test()//a.prototype18 setTimeout(b.test,100)//Window19 document.body.onclick = function(e){20     b.test();//b21     test();//Window22     console.log(this)//document.body23 }24 function callMethod(callback){25     callback();//Window26     arguments[0]();//arguments --> arguments.0()27 }28 callMethod(b.test);

 

上面的例子中注释的位置显示了当前this的指向,我们可以看到,this可以是对象也可以是函数等,在有调用者的时候指向调用者,call、apply可以改变函数内部的this,其他时刻指向的是Global(浏览器中为Window)。as的情况与js完全相同。

  下面我们来说说js,as之间调用时,this的指向:

  js调用as函数时,as函数内部的this指向root。

  as调用js时呢?实际上还是遵循上面的那句话。请看下面的例子

1 //AS代码2 externalinterface.call("test");3 externalinterface.call("test.test");4 //JS代码5 function test(){6   console.log(this);  7 }8 test.test = test;

  AS代码中第一句调用,调用了全局函数test,并没有制定调用者,则此时test函数中this指向Global,AS第二句调用,是对test下的test进行调用,所以this会指向函数test,也就是说AS调用js,对于this的指向与AS无关,判断this的方式和js内部调用时完全相同。

      怎么样一句话记住this,没错吧~嘻嘻~

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
js中this的用法
02. JS 变量(variable)
javascript 作用域和 this 关键字
JavaScript 预编译与作用域
ES6 学习笔记
js 预编译
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服