调用计算对象上的方法时,javascript中的“this”是什么?

前端之家收集整理的这篇文章主要介绍了调用计算对象上的方法时,javascript中的“this”是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道这可能是 JavaScript中第二个最关心的事情,就在浮点算术之后.

我通常知道这是如何工作的,以及它如何受到箭头函数.call(),.apply()和.bind()的影响.我以为我理解了一切.但我不.

在web浏览器中,document.createElement(“div”).classList.add(“c”)按预期的方式生成undefined.然而,这个表达令人惊讶地是一个错误.

(true && document.createElement("div").classList.add)("c")

我预计它是一样的,但它是

Uncaught TypeError: Illegal invocation
    at <anonymous>:1:54

解决方法

你的声明

(true&& document.createElement(“div”).classList.add)(“c”)也可以重写如下:

var add = (true && document.createElement("div").classList.add)
add("c")

[逻辑与(&)expr1& expr2:如果可以将其转换为false,则返回expr1;否则返回expr2.]

你看到这个函数add现在是窗口的一部分,失去了实际的classList对象的引用,因此不能被正确的调用.

现在这个add这个指向全局对象.

如果您执行以下操作(如果新的div是您页面上唯一的div),它再次引用了原始对象:

(true && document.createElement("div").classList.add).bind(document.getElementsByTagName("div")[0].classList)("c")

猜你在找的JavaScript相关文章