gpt4 book ai didi

javascript - 如何在 Javascript 中获取此关键字的类型?

转载 作者:行者123 更新时间:2023-12-05 00:34:39 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Messing with this in prototype's method

(2 个回答)


去年关闭。




我正在操作 Object 的原型(prototype)这样我就可以添加一些扩展方法。
我发现 typeof运算符总是返回 object如果操作数是 this :

Object.prototype.logType = function () { console.log(typeof this); }
"Hello".logType()
上面代码的输出是 object而不是 string .我知道在 JavaScript 中一切确实是 object , 但是我需要知道 this 值的确切类型.我怎样才能做到这一点?

最佳答案

当您调用原语上的方法时,JS 会自动将该原语包装在其关联对象包装器中,因此:

"Hello".logType()  
变成:
new String("Hello").logType() 
因此, this您的 logType 函数内部指的是包装的原始值,为您提供一个对象。您可以调用 .valueOf() 获取包裹在对象中的原始值:

Object.prototype.logType = function () { console.log(typeof this.valueOf()); }

"Hello".logType(); // string
(1).logType(); // number
true.logType(); // boolean
1n.logType(); // bigint
Symbol().logType(); // symbol
(() => {}).logType(); // function
({}).logType(); // object

或者,您可以按照评论中的建议使用严格模式,因为这样可以保留 this作为原始原语:

Object.prototype.logType = function () { "use strict"; console.log(typeof this); }

"Hello".logType(); // string
(1).logType(); // number
true.logType(); // boolean
1n.logType(); // bigint
Symbol().logType(); // symbol
(() => {}).logType(); // function
({}).logType(); // object

关于javascript - 如何在 Javascript 中获取此关键字的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68053380/

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