ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-11-22 02:38:21  阅读:155  来源: 互联网

标签:performance trim javascript jquery


查看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“”)的字符串.

标签:performance,trim,javascript,jquery
来源: https://codeday.me/bug/20191122/2056339.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有