这里主要关注的是值类型和引用类型。

我们知道在javascript中的变量在内存中的存储有两种形式,值类型存储和引用类型存储。

通常可以进行值存储的包括  字符串类型,布尔值类型,数字类型,他们都包含了字面量表示形式,如下:

var str='str';
var bool=true;
var num=11;

这里定义的变量是直接在地址中存值的,而常用的数组(其实也属于对象)和对象也有字面量,不过是引用存储,即内存中存储的是对应数据的地址(不是本文重点)。

接着我们探究String()和new String()的差异

var str1=String('str1');
str1.aa='hello';
console.log('str1.aa:',str1.aa);//str1.aa: undefined var str2=new String('str2');
str2.aa='world';
console.log('str2.aa:',str2.aa);//str2.aa: world

内存引用的变量归根结底都是object,是可以设置值和取值的(要产生设置值和取值不同,除非定义了getter和setter,没那么巧吧?)

通过上面的测试,发现String()直接使用返回的是值存储,而new String()  返回的是引用存储,即 返回的是一个对象(这是很合理的啊,new 出来的都是对象嘛,呵呵)。

给出另一个测试方式

var Fun1=function(){
return String('str1');
}; var Fun2=function(){
return new String('str1');
}; console.log('Fun1 output:',new Fun1());//Fun1 output: {}
console.log('Fun2 output:',new Fun2());//Fun2 output: [String: 'str1']

这个测试主要是根据constructor 的return ,如果是对象的话,就会直接把对象结果返回替换当前对象,而如果是值则忽略。

同理证明 Boolean() 和 Number();

var boolVal1=Boolean(true);
boolVal1.aa='hello';
console.log('boolVal1.aa:',boolVal1.aa);//boolVal.aa: undefined var booVal2=new Boolean(true);
booVal2.aa='world';
console.log('booVal2.aa:',booVal2.aa);//booVal2.aa: world var numVal1=Number(1);
numVal1.aa='hello';
console.log('numVal1.aa:',numVal1.aa);//boolVal.aa: undefined var numVal2=new Number(1);
numVal2.aa='world';
console.log('numVal2.aa:',numVal2.aa);//numVal2.aa: world

Javascript中String()与new String()的差异的更多相关文章

  1. JavaScript中unicode编码与String互转(三种方法)

    1.引言 JS本身就支持unicode转string功能,一共有三种方式和String单个字符转unicode编码. 2.方法 //unicode转String 1. eval("'&quo ...

  2. JavaScript中的number跟string

    遇到问题困扰很久,因为这看起来木有问题,都是对的啊,殊不知是因为参数需要一个数字类型,但是数据却悄悄变成了字符类型.在群里求救无果最后自己找到了原因. 为什么我箭头里放数字可以正常显示,放temp[i ...

  3. Javascript中的string类型使用UTF-16编码

    2019独角兽企业重金招聘Python工程师标准>>> 在JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的. MDN DOMS ...

  4. Javascript中String()和new String()的区别——JS的包装对象

    最近在看Symbol不能使用new操作符,然后类比到Number,String,Boolean,因为它们同属于基本类型,但是有有所差异:Number,String,Boolean是可以使用new操作符 ...

  5. Javascript中String对象的的简单学习

    第十一课String对象介绍1:属性    在javascript中可以用单引号,或者双引号括起来的一个字符当作    一个字符对象的实例,所以可以在某个字符串后再加上.去调用String    对象 ...

  6. 浅谈JavaScript中的string拥有方法的原因

    我们都知道,JavaScript数据类型分两大类,基本类型(或者称原始类型)和引用类型. 基本类型的值是保存在栈内存中的简单数据段,它们是按值访问的.JS中有五种基本类型:Undefined.Null ...

  7. ExtJS学习-----------Ext.String,ExtJS对javascript中的String的扩展

    关于ExtJS对javascript中的String的扩展,能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 以 ...

  8. JavaScript中String对象的match()、replace() 配合正则表达式使用

    正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...

  9. 在Javascript中使用String.startsWith和endsWith

    在Javascript中使用String.startsWith和endsWith 在操作字符串(String)类型的时候,startsWith(anotherString)和endsWith(anot ...

随机推荐

  1. Dreamweaver架设网站终极教程

    转自:http://www.cnblogs.com/loveme513/archive/2006/04/03/365969.html 一.定义站点 1. 在任意一个根目录下创建好一个文件夹(我们这里假 ...

  2. <转>好婚姻是彼此放心

    -01- 临下班,马丽听到隔壁桌的方雅在打电话,声音听起来嗲声嗲气:“有个朋友晚上约我吃饭,要晚点回来,你不用等我了哦.” 电话挂断时,已经到了下班的点.方雅扭头对马丽说:“丽姐,待会我们一起去吃个饭 ...

  3. js类型检测

    1.typeof  或者  typeof() 适合基本类型及function检测,遇null失效 ex: typeof 100      返回值为 "number" typeof ...

  4. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  5. js 对多sheet Excel赋值操作

    function ExpExcel(){ var tempStr = ""; var filePath ="" var excelname=ReportFile ...

  6. 75篇关于Tomcat源码和机制的文章

    75篇关于Tomcat源码和机制的文章 标签: tomcat源码机制 2016-12-30 16:00 10083人阅读 评论(1) 收藏 举报  分类: tomcat内核(82)  版权声明:本文为 ...

  7. PHP动态实例化对象并向构造函数传递参数

    在框架开发,模块化开发等场合,我们可能有一种需求,那就是在PHP运行时动态实例化对象. 什么是动态实例化对象呢?我们先来看一下PHP有一种变量函数(可变函数)的概念,例如如下代码: function ...

  8. C语言局部变量和全局变量的区别。——Arvin

    局变量是使用相同的内存块在整个类中存储一个值. 全局变量的存在主要有以下一些原因:  1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨 ...

  9. 编译2.4.X apache 常见错误

    安装高版本的 apr    apr-util ./configure prefix=/usr/local/apr   ./configure prefix=/usr/local/apr-util -- ...

  10. 什么是UART中的FIFO

    FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可以节省CPU时间.对于发送数据也一样可以把要发送的数据一起写入FIFO,串口控制器按照写入的顺 ...