- this指向问题是老生长谈问题,ps:在理解上this是的对象的别名。
<span style="white-space:pre"> </span>/* * 代码展示 * name 全局变量 * say 全局函数 * 小知识:全局对象是window, 全局变量相对于对象来说,就是全局对象(window)的属性,全局函数相对于对象来说,就是全局对象(window)的方法。 * this代表的window(大家可以测试呀),this同样是相对于对象来说的。 */ var name="javascript"; function say(){ var name="php"; //这里是相对于函数来说的,也就是函数 alert(this.name); //有人会打印出php,对吧,其实这是javascript. this会去找属性name console.log(this); alert(name); //验证 } say();//用于触发函数和方法
总结:在Javascript中,方法和函数式,是相对于不同的环境的,相对于window,可以是方法和函数,相对于其他的对象,是方法。
- this指向的转换
<span style="white-space:pre"> </span>var name="javascript"; function say(){ var name="php"; //这里是相对于函数来说的,也就是函数 alert(this.name); //有人会打印出php,对吧,其实这是javascript. this会去找属性name console.log(this); alert(name); //验证 } //say(); console.log(say); var a=new say();//这是重点 当使用关键词new时,你会发现alert的是undefined的。你自己运行代码,会有你意想不到的答案!!!这是因为this指向a,然而a没有属性name,进一步说明了,new也触发这个函数(作为构造函数)。
我是一只只快乐的小小鸟,一直想飞的更高。
Javascript---有趣的一段代码--this指向问题
最新推荐文章于 2024-09-16 08:47:17 发布