美文网首页
JavaScript Tips: String & ne

JavaScript Tips: String & ne

作者: 云之外 | 来源:发表于2017-04-05 23:19 被阅读14次

    在 JavaScript 中,有三种声明字符串的形式:

    var str = "string"
    var str2 = String("string")
    var str3 = new String("string")
    

    第一种和第二种是相同的。第三种严格意义上讲不算是声明字符串,而是使用 String 生成一个 object

    String

    可以看一下 MDN 对 String 的定义:https://developer.mozilla.org/cn/docs/Web/JavaScript/Reference/Global_Objects/String

    String 全局对象是一个用于字符串或一个字符序列的构造函数。

    可以看到,String 的本质是一个函数。String(thing)thing 变成一个字符串并返回。

    new String

    要想弄明白 new String 到底做了什么工作,就要先明白 JavaScript 的 new 运算符做了哪些事情:

    • 创建了一个新的对象,对象类型为 object
    • 设置这个新的对象的内部、可访问性和 [[prototype]] 属性为构造函数(指 prototype.construtor 所指向的构造函数)中设置的;
    • 执行构造函数,当 this 关键字被提及的时候,使用新创建的对象的属性;
    • 返回新创建的对象。

    new String 生成了一个完整的 object ,并不是一个字符串。

    === & typeof

    明白了以上两点,就很好解释 Stringnew String 的区别了。对于文章开头出现的代码,我们能得到以下的结果。

    str === str2 // true
    str === str3 // false
    typeof str // string
    typeof str3 // object
    

    相关文章

      网友评论

          本文标题:JavaScript Tips: String & ne

          本文链接:https://www.haomeiwen.com/subject/puixattx.html