博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jquery第四课 Javascript中this的使用方法
阅读量:6340 次
发布时间:2019-06-22

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

thiskeyword的使用

在JavaScript中使用thiskeyword表示调用方法的对象,这与大部分面向对象语言是一样的。可是因为callapplybind等函数的影响。我们能够改变this所代指的对象。

  • 使用call或者apply调用的函数中,this代指传入的第一个參数对象,假设传入null或者undefined。则表示全局对象(window)。
  • 通过对象调用函数(方法),函数中的this表示调用该函数的对象。

  • 单独调用的函数中this表示全局对象。
var myObject = {
sayHello: function() {
console.log("Hi, my name is " + this.myName); }, myName: "Rebecca"};var secondObject = {
myName: "Colin"};myObject.sayHello(); //"Hi, my name is Rebecca"myObject.sayHello.call(secondObject); //"Hi, my name is Colin"
var myName = "the global object";var sayHello = function() {
console.log("Hi, my name is " + this.myName);};var myObject = {
myName = "Rebecca"};var myObjectHello = sayHello.bind(myObject);sayHello(); //"Hi, my name is the global object"myObjectHello(); //"Hi, my name is Rebecca"

JavaScript能够在执行中为对象动态加入函数,这样也会导致this代指的对象发生变化。

var myName = "the global object";var sayHello = function() {
console.log("Hi, my name is " + this.myName);};var myObject = {
myName: "Rebecca"};var secondObject = {
myName: "Colin"};myObject.sayHello = sayHello;secondObject.sayHello = sayHello;sayHello(); //"Hi, my name is the global object"myObject.sayHello(); //"Hi, my name is Rebecca"secondObject.sayHello(); //"Hi, my name is Colin"

还有。不能直接给处于较深的名字空间的函数添加短引用,会导致this变为全局对象,可是能够对它所处的对象设置短引用。

var myNamespace = {
myObject: {
sayHello: function() {
console.log("Hi, my name is " + this.name); }, myName: "Rebecca" }};var hello = myNamespace.myObject.sayHello;hello(); //"Hi, my name is undefined"var obj = myNamespace.myObject;obj.sayHello(); //"Hi, my name is Rebecca"

Tips

callapply的差别是,apply接收两个參数:this和函数的參数数组;而call的第一个參数为this,可是后面是函数的參数列表。

本文档由整理。

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

你可能感兴趣的文章
[LeetCode]--349. Intersection of Two Arrays
查看>>
tomcat启动报错
查看>>
mongorocks引擎原理解析
查看>>
oracle11g R2 RAC卸载grid
查看>>
ES6 结构和扩展运算符
查看>>
王利阳:电商大促 决战6.18
查看>>
kafka消息传输的事务定义
查看>>
实现LNMMP
查看>>
mysql的pid文件出现问题
查看>>
计算rem单位
查看>>
第七章 大网高级 ASA
查看>>
rsync+inotify触发式远程同步
查看>>
优秀设计师应当知道的几大UI设计原则(一)
查看>>
mongodb高级查询
查看>>
struts2.1 struts.devMode BUG解决方案
查看>>
日本法院裁定三星诉苹果专利侵权案败诉
查看>>
Windows Server 2012R2 桌面体验问题直通车
查看>>
Springboot配置文件读取报错Configuration property name 'projectUrl' is not valid:
查看>>
HTTP状态码
查看>>
今天的学习
查看>>