JavaScript Tips: String & new String()

在 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,771评论 0 4
  • 亲爱的,你说我们会怎样相遇呢? 你要是知道我这样问,你会不会觉得我很傻?
    暖朵19阅读 1,315评论 0 1
  • OkHttp3.7源码分析文章列表如下:拆轮子:OkHttp 的源码解析(一):概述拆轮子:OkHttp 的源码解...
    ldlywt阅读 5,359评论 0 18
  • 上次讲到ThreadLocal的使用场景,这次接着讲。 管理应用程序的线程安全 使用ThreadLocal来实现线...
    一帅阅读 3,146评论 0 1

友情链接更多精彩内容