JS中的基本类型:

boolean null undefined string number symbol

每当读取一个基本类型的时候,会隐式的自动进行装箱操作(即:将一个基本类型变成对象):

var s1 = "some text";

var s2 = s1.subString(2);

 

如上所视,变量s1是一个基本类型值,它不是对象,所以它不应该有方法。但是js内部为我们完成了一系列处理(即我们称之为装箱),使得它能够调用方法,实现的机制如下:

(1)创建String类型的一个实例;

(2)在实例上调用指定的方法;

(3)销毁这个实例;

这个过程也可以用代码来展现:

var s1  = new String("some text");
var s2 = s1.substring(2);
s1 = null;

2,拆箱:

将引用类型对象转换为对应的值类型对象,它是通过引用类型的valueOf()或者toString()方法来实现的。如果是自定义的对象,你也可以自定义它的valueOf()/tostring()方法,实现对这个对象的拆箱。

let objNum = new Number(123)

let objStr = new String("123")

console.log( typeof objNum) //object

console.log(typeof objStr)    //object

console.log( typeof objNum.valueOf() ) // number

console.log( typeof objStr.valueOf()   ) // string

console.log( typeof objNum.toString() ) // string

console.log(typeof objStr.toString() );    // string

 

资料1:

https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch3.md

装箱操作可以直接用Object(...):

不建议手动装箱,如下面的例子,object永远是truthy的:

JavaScript对原始数据类型的拆装箱操作的更多相关文章

  1. javascript 的原始数据类型

     javascript 的原始数据类型有五种,分别是Number.String.Boolean.null.undefined   原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变 ...

  2. JavaScript基础原始数据类型的封装对象(013)

    JavaScript提供了5种原始数据类型:number, string, boolean, null, and undefined.对于前面3个,即number, string, 和boolean提 ...

  3. Java的自动拆/装箱

    作者:Alvin 关键字:语法糖 类 对象 参考 Java 中的语法糖 语法糖--这一篇全了解 浅谈 Integer 类 什么是Java中的自动拆装箱 深入剖析Java中的装箱和拆箱 前言 我们知道, ...

  4. 一文读懂什么是Java中的自动拆装箱

    基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为 ...

  5. 自动拆装箱(int,Integer)

    包装类型Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个 ...

  6. Java的自动拆装箱与Integer的缓存机制

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10832303.html 一:基本类型与包装类型     我们知道,Java有8大基本数据类型,4整2浮1符1 ...

  7. Java中的自动拆装箱(转)

    出处: 一文读懂什么是Java中的自动拆装箱 本文主要介绍Java中的自动拆箱与自动装箱的有关知识.  基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我 ...

  8. 什么是Java中的自动拆装箱

    1.基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值 ...

  9. java自动拆装箱

    介绍 Java 5增加了自动装箱与自动拆箱机制,方便基本类型与包装类型的相互转换操作.(关于基本类型与包装类型之前有记录过https://www.cnblogs.com/xiuzhublog/p/12 ...

随机推荐

  1. DIV响应式

    @media only screen and (min-width: 100px) and (max-width: 640px) { div { width: 100px; height: 100px ...

  2. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&岩石加入而且管理

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  3. 寻找不到iframe元素

    一直找不到元素,是因为有两层iframe的 找iFrame元素方法如下 1.iFrame有ID 或者 name的情况//进入id="frame1"的frame中,定位id=&quo ...

  4. Unity3d数据加密

    在unity中能够使用c#自带的对称算法对数据进行加密,以下两种加密算法: using System; using System.Text; using System.Security.Cryptog ...

  5. UIViewController生命周期控制

    UIViewController生命周期控制 UIViewController介绍 官方的介绍例如以下 The UIViewController class provides the fundamen ...

  6. 基于SpringMVC+SpringJDBC的用户管理系统(增删查改)

    鉴于MyBatis暂时不会用,所以用刚学的SpringJDBC代替,也很简洁.以下贴出几个重要的代码. 1.UserDaoImpl数据库操作实现类 package com.wxy.dao.impl; ...

  7. luogu3197 [HNOI2008] 越狱

    题目大意 已知序列$P$满足$|P|=N$,(以下所有$i,i\in[1,N]$)$\forall i, P_i\in [1,M]$.求$|\{P|\exists i, P_i =P_{i+1}\}| ...

  8. linux udev 机制【转】

    本文转载自:http://blog.csdn.net/yyt8yyt8/article/details/8020154 1. Linux的热插拔事件由kernel通过中断发现(比如,USB设备插入系统 ...

  9. modelstate.isvalid false

    http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be th ...

  10. linux sysbench (一): CPU性能测试详解

    网上sysbench教材众多,但没有一篇中文教材对cpu测试参数和结果进行详解. 本文旨在能够让读者对sysbench的cpu有一定了解. 小慢哥的原创文章,欢迎转载 1.sysbench基础知识 s ...