分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

JS中String()与new String()的区别

发布时间:2023-09-06 01:18责任编辑:赖小花关键词:暂无标签

今天看到这样的面试题,如下:

var yiifaa = ‘yiifaa‘, ???str1 = new String(yiifaa), ???str2 = String(yiifaa)
  • 1
  • 2
  • 3

声明与赋值了3个变量,然后考题如下:

// ?请确认以下的判断是否准确str1 === yiifaa//str2 === yiifaa//typeof str1 === typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

根据JS的语法,要满足===的条件如下: 
1. 如果是引用类型,则两个变量必须指向同一个对象(同一个地址); 
2. 如果是基本类型,则两个变量除了类型必须相同外,值还必须相等。

再把话题切换到String对象上来,String的声明方式有三种(请参见第一段代码),但产生的类型却不尽相同,结果如下:

// ?类型为string,为基本类型typeof yiifaa// ?类型为object,为引用类型typeof str1// ?类型为string,为基本类型typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

那现在答案很清楚了,如下:

// ?false, 因为str1为引用类型str1 === yiifaa// ?true, 因为都是基本类型,并且值相等str2 === yiifaa// false, 虽然都是字符串,但分别为object与stringtypeof str1 === typeof str2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结

很神奇的String对象,一方面可以作为基本类型,另一方面还可以作为引用类型,更神奇的是,为String.prototype添加方法,基本类型还可以引用到,怎么做到的?

JS中String()与new String()的区别

原文地址:http://www.cnblogs.com/qfly/p/7675567.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved