javascript的this关键字总结

在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象。一般在编译期确定下来,或称为编译期绑定。而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的, 那么JavaScript 中的 this究竟指代什么成为一个大的问题!

我在一片博文中看到这样的一个定论:“在Javascript中,This关键字永远都指向函数(方法)的所有者” ,我自身是比较赞同的。

(1)定义在全局的函数, 其实也就是window对象的一个方法.所以,我们即可用通过函数名直接调用, 也可用通过window.方法名来 调用, 这个时候, 方法中的this关键字指向它的所有者:window对象.

var name = "I am Laruence";
function introduce() {
alert(this.name);
}
alert(window.introduce);

(2)事件处理函数的this指代可能会让我们迷糊,也会质疑在Javascript中,This关键字永远都指向函数(方法)的所有者 ,

例如:

    <input id="name" type="text"  name="name" value="nancy" />
    function showValue() {
     alert(this.value);
     }
     document.getElementById('name').onclick = showValue;
这个地方的this指代的是输入框Dom对象,这里可能会觉得这里不符合上面的定论。其实是符合的,对于上面的代码, 在对onclick绑 定处理器的时候, 其实是对id为name的输入框Dom对象的onclick属性赋值.也就是说, 我们把函数showValue Copy 给了name输入框对象的onclick属性. 在Js中一切都是对象, 函数和方法也都是对象的属性, 只不过函数有可执行的内部属性.
   function showValue() {
    alert(this.value);
   }
   <input id="name" type="text"  name="name" value="Laruence"  οnclick="showValue()"/>
这个地方的this指代window,所以alert(this.name)执行为undefined

那怎么才能让this指向我们想要指的地方呢?

而对于不是事件处理函数的场合, 我们可以使用apply, 或者call, 来改变this关键字的指向.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值