gpt4 book ai didi

javascript - String.prototype.trim.call(text) 和 text.trim() 的区别

转载 作者:行者123 更新时间:2023-11-29 10:15:47 26 4
gpt4 key购买 nike

查看 jQuery 的源代码:

// Use native String.trim function wherever possible
trim: trim && !trim.call("\uFEFF\xA0") ?
function( text ) {
return text == null ?
"" :
trim.call( text );
} :

// Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
},

为什么他们使用 trim.call(text) 而不是 text.trim() 是有原因的吗?非常感谢!!

更新:

这样,如果参数不是字符串,它就不会抛出异常。但是根据 jQuery 的文档,参数应该是一个字符串,所以如果用户使用错误,它是否应该抛出异常(否则用户可能不会注意到错误)?

致 Nathaniel Currier:该方法是 jQuery.trim() 而不是 jQuery.fn.trim(),因此它没有链接。

最佳答案

我不确定这是他们的设计原理,但使用 call() 将适用于不是字符串的对象:

var a = [1, 2, 3];
var b = String.prototype.trim.call(a); // same result as b = '1,2,3'
var c = a.trim(); // => generates TypeError

请注意,他们的 polyfill 将 text 强制转换为带有 ( text + "") 的字符串。

关于javascript - String.prototype.trim.call(text) 和 text.trim() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22242131/

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