博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中的this
阅读量:5899 次
发布时间:2019-06-19

本文共 1532 字,大约阅读时间需要 5 分钟。

有些东西,见过,写过,还以为自己就理解了,偶然之间,发现自己的博客中还有很多自己不理解的东西,原来自己已经落下很多功课了,就拿JS中的这个this来说吧,我已经不止一次的说this在JS中就是一个奇葩,一个让人捉摸不透的东西,但是又是非常灵活的东西,这是初衷,我又说过this在JS中永远指向的是当前的作用域,可是判断这个作用域并不是这么的容易。以下内容参考

 

第四部分:在全局中使用this  结果会是什么呢:1 1 2?但是结果是1 2 2很有疑问吧?调用这个函数是在window中调用,所以说this就是window,window.a=2。当单独调用test()时,test其实就相当于window.test,里面的this也不用说就是this。 第五部分:在对象中使用this  结果是Mike。JS的函数可以充当类似Java中的构造函数,当用new的时候,这个时候会产生一个对象,那么里面的this 也就是当前的这个对象,这里this所在的作用域是在person当中,先搜索其中的属性,然后搜索原型,一直找到。 这里一直搜索到Person.prototype.name第五部分:this在继承当中使用 结果是Sam,调用者是son,他先找自己的属性,然后是原型,最后的是原型的原型,一直找到。第六部分:在回调函数中使用this 结果是Mike JIM。第一个相当于person在调用,搜索他的作用域。第二个是window在调用,搜索window作用域。第七部分:在闭包中使用this 结果是Mike?但是错了,结果却是JIM。JS中的this是在运行的时候确定的,this并不会保存在作用域链的。让我们分析下person.getName():var temp=person.getName();         document.write(temp()); var temp=person.getName();        document.write(temp());person.getName()返回的是一个函数,他可以保存其他的作用域链,this不保存,第一步仅仅是返回了一个函数,他的结果是什么,还得继续看,调用的位置。这里是window,当然是JIM啦。 www.2cto.com我们现在可以总结一下,关于this在函数当中的使用情况。谁调用他,this就指向谁,就搜索他的作用域。这下子,就完全明了了,this到底怎么使用了,他指向的是谁。

练习题:

var name = "The Window";window.onload=function(){var name = "The Window";  var object = {    name : "My Object",    getNameFunc : function(){      var that = this;      return function(){                var x=this;        return that.name;      };    }  };  alert(object.getNameFunc()());   var object = {    name: "My Object",    getNameFunc : function(){      return function(){                var that=this;        return this.name;      };    }  };  alert(object.getNameFunc()());} 

 

转载地址:http://ddhsx.baihongyu.com/

你可能感兴趣的文章
提单号提示
查看>>
5.1 零成本控制
查看>>
读取txt文件,并用其他格式显示
查看>>
zabbix 3.2.7 (源码包)安装部署
查看>>
ubuntu16 升级后找不到 eth0 网卡 的解决方法
查看>>
看懂此文,不再困惑于 JS 中的事件设计
查看>>
vsCode 快捷键、插件
查看>>
IMapDocument interface
查看>>
职业生涯规划常用测试工具
查看>>
一些实用性的总结与纠正
查看>>
VC++ 6.0下多线程编程的最简单实例
查看>>
正则表达式之——POSIX正则表达式函数
查看>>
SQL截取字符串
查看>>
webpack练手项目之easySlide(二):代码分割(转)
查看>>
dubbo源码编译
查看>>
vue-validator(vue验证器)
查看>>
jQuery Ajax MVC 下拉框联动
查看>>
格雷码原理与Verilog实现
查看>>
P2569 股票交易
查看>>
每天一个linux命令(21):chgrp,chown,chmod
查看>>