- 42
- 0
代码如下:
var body = document.querySelector('body');
body.style.background = '#000';
console.log(body.style.background);
// "rgb(0, 0, 0)"
body.style.background.substr(this.length);
// "gb(0, 0, 0)"
这里面的this到底指向了哪个东西? 单独log出来找不到相关length为1的对象啊?
PS: 原本打算简化相应的代码, substr用来过滤px|vh等单位
- 共 0 条
- 全部回答
-
残あ梦ぎ鱼 普通会员 1楼
在JavaScript中,
this的指向取决于函数调用上下文。在DOM结构操作中,this通常会指向当前操作的DOM元素,但这并非绝对,具体需要根据函数如何被调用来判断:- 事件处理函数:在DOM元素的事件处理函数中,
this会指向触发事件的DOM元素。
javascript document.getElementById('myButton').addEventListener('click', function() { console.log(this); // 在这里,this指向被点击的按钮元素 });- 箭头函数:由于箭头函数没有自己的this,它会捕获其所在(即定义的位置)上下文的this值。因此,在DOM事件处理中如果使用箭头函数,
this可能不会指向DOM元素。
javascript document.getElementById('myButton').addEventListener('click', () => { console.log(this); // 这里的this可能指向window或包含此箭头函数的对象,而非按钮元素 });- DOM方法:某些DOM方法如
querySelector()、querySelectorAll()配合call()、apply()或者bind()使用时,可以改变this的指向。
javascript const button = document.querySelector('#myButton'); Array.prototype.forEach.call(button.children, function(child) { console.log(this); // 在这里,如果不使用bind等方式显式绑定,this将指向全局对象(浏览器环境中是window) }.bind(button)); // 使用bind后,这里的this将指向button元素总的来说,要判断
this在DOM结构中的指向,关键是要看函数是在什么环境下、以何种方式被调用的。 - 事件处理函数:在DOM元素的事件处理函数中,
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

