星空网 > 软件开发 > Java

javascript之观码说理

前一阶段看到大神在网上贴出的测试个人js理解的代码。

在此我在此借用大神的代码,进行自我复述,大神文章参见:http://www.imooc.com/article/1731

代码1:

function foo(){  console.log(this.a);}function doFoo(fn){  fn();}function doFoo2(o){  o.foo();}var obj = {  a: 2,  foo: foo};var a = "I'm an a";doFoo(obj.foo);doFoo2(obj);


 

我的理解:

先说doFoo(obj.foo)

传入的参数obj.foo即对象obj的元素foo,内容为foo。

此时传入的foo在方法doFoo中就变成了调用foo()方法。

因为foo()是定义在最外层的,此时的this指向最外层对象window,所以取得的a应该是在最外层定义的 var a = "I'm an a";。

所以第一个方法返回的是I'm an a。

 

其次说doFoo2(obj)

传入的参数是obj对象.

此时在doFoo2中调用的是obj.foo()。

这时foo()方法中的this重新指向了obj对象,所以this.a取得的是obj对象中的a。

所以第二个方法返回的是2.

 

大神的分析:

Javascript中,this指向函数 执行时的当前对象,而非声明环境有
执行doFoo的时候执行环境就是doFoo函数,执行环境为全局。
执行doFoo2时是在对象内部调用函数,this指针指向该对象。

 

代码2:

function foo(somthing){  console.log(this.a, somthing);}function bind(fn, obj){  return function(){    return fn.apply(obj, arguments);  }}var obj = {  a:2}var bar = bind(foo, obj);var b = bar(3);console.log(b);


未完待续

 




原标题:javascript之观码说理

关键词:JavaScript

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

TikTok 2023 趋势与更新!:https://www.goluckyvip.com/news/10205.html
跨境电商与海外仓设立(下) :https://www.goluckyvip.com/news/10206.html
有哪些提升跨境物流供应链效率的方法? :https://www.goluckyvip.com/news/10207.html
跨境兴运提高跨境物流准确性的建议: :https://www.goluckyvip.com/news/10208.html
TikTok Shop 开始在中东复制 Temu :https://www.goluckyvip.com/news/10209.html
联邦快递恐信用破产!转运华为包裹事件再次升级:https://www.goluckyvip.com/news/1021.html
武陵山大裂谷周围景点 武陵山大裂谷周围景点图片:https://www.vstour.cn/a/411233.html
南美旅游报价(探索南美洲的旅行费用):https://www.vstour.cn/a/411234.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流