gpt4 book ai didi

javascript - 为什么 Javascript 不能正确绑定(bind)我的点表达式?

转载 作者:行者123 更新时间:2023-12-03 00:01:02 26 4
gpt4 key购买 nike

我想知道点抽象方法(例如 dog.bark )是否在运行时或编译时绑定(bind)。我的问题涉及以下代码,该代码会引发错误:

(true ? ''.toLowerCase : ''.toUpperCase)()

但以下情况则不然:

true ? ''.toLowerCase() : ''.toUpperCase()

为什么我的字符串文字是 ''第一个例子没有得到解决?

最佳答案

(true ? ''.toLowerCase : ''.toUpperCase)()

相当于:

String.prototype.toLowerCase.call()
// or:
String.prototype.toLowerCase.call(undefined)

但是,

true ? ''.toLowerCase() : ''.toUpperCase()

相当于:

String.prototype.toLowerCase.call('')

在这两种情况下,call 的第一个参数都会转换为一个对象,String.prototype.toLowerCase 中的 this 将引用该对象到。

undefined 无法转换为对象,但空字符串可以:

function logThis () { console.log(this); }

logThis.call('');

SO 代码段控制台仅显示 {},但它实际上与您从 new String('') 获得的内容相同。阅读 MDN 上有关字符串包装器的信息.

关于javascript - 为什么 Javascript 不能正确绑定(bind)我的点表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45854729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com