JS中 var obj = new (String);怎么理解?

如题所示


let obj1 = new (String);
console.log(obj1);
console.log(typeof obj1);

图片描述

阅读 2.5k
2 个回答

这是一道非常好的题目,强迫症发作写得有点详细(啰嗦)了(尬
一、基础理解
1.区分普通字符串和字符串类型对象
①普通字符串

var str = "foo" 等同于var str = String("foo")

②字符串类型对象

var str = new String("foo")

2.new String() 等同于 new (String)

var strStd = new String()
var strUnq = new (String)
console.log(strStd)
console.log(strUnq)

二者都是经由 new 这个操作符,再结合Sring类型的构造函数生成的。

二、进阶实验
如果还是觉得抽象,我们把初始值分离出来,再写2段代码跑一遍,对比下结果就基本明白了!

第1段:没初始值

var foo = String()
var bar = new String()
console.log(foo)//nothing
console.log(bar)//a new String object

clipboard.png

第2段:有初始值

var foo = String("foo")
var bar = new String("bar")
console.log(foo)//"foo"
console.log(bar)//a new String Object with primitive value "bar"

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏