本标题党又回来了,最近在专心研究一些JS基础性的书籍,以期把原理都了解透彻,所以写文章的频率就降了下来。但是今天我必须要来写一下子,为什么呢,因为今天周五!先说明一下JS里面的拆箱与装箱指的是JS封箱和拆箱,已经玩的很六的大佬就不要浪费时间啦,抓紧研究更深的!

引子:

我们来看一下这段简单的代码,可能有的人会问这有啥,不就是新建一个字符串然后调用字符串上的方法嘛,其实这里面还是有点馅的,下面让我们来尝一尝究竟是什么馅料

首先在JS里面字符串是属于基本数据类型的,那为何基本数据类型上会有方法呢,我套你个猴子的,有方法那不是成对象了。

要解释这个问题我们就不得不提JS里面的一种机制,封装对象的包装与拆装,即装箱与拆箱。

装箱:

当我们在基本数据类型上调用方法的时候,JS会默认进行装箱操作。啥叫装箱呢,下面让我来操作一波好吧。

相信在座的各位或多或少都看过铠甲勇士吧,铠甲勇士一般的桥段就是ERP研究室基地发现有小怪兽出现了,会通知铠甲勇士,此时此刻他们大喊一声铠甲合体!就由一个普通人变为了铠甲勇士,什么火焰拳之类的在普通人状态没有的技能统统都来了!

这就跟装箱操作一样一样的嗷,JS引擎就是ERP基地,而基本数据类型的变量就相当于普通人,方法则相当于技能。作为普通人是没有火焰拳技能的,但是穿上铠甲之后不止能调用函数,打十个都行,来评论区上来几个我给你们示范一下子。这个还要注意一下不是啥技能都能放的,只能放对应铠甲的技能,比如你穿个炎龙铠甲放出个风鹰腿来,你以为你谁,导演吗?这和JS原理是一样的,虽说JS会进行装箱操作,但也不会乱装,字符串装成字String对象,数字装成Number对象...

 

拆箱:

当技能被放了,小怪兽被消灭了完了怎么办呢,当然是取消铠甲合体变回一个普通人咯。JS也这样的,函数也调用完了是吧,调完了就给拆开,把变量重新变回一个基本数据类型的变量。

还有一点需要注意一下,装箱完了使用后会进行拆箱,就跟穿铠甲打完小怪兽装完***后总得解除合体吧,如果一直穿着可就显得有点呆滞了啊!

结语:

好了,今天就先到这里了,上午看到有人说技术文章不应该扯很多废话,个人认为分情况吧,如果多扯几句能记忆更深刻,理解的更透彻,那何乐而不为呢,大家怎么看呢

JS里面的铠甲合体!的更多相关文章

  1. python-day5(正式学习)

    格式化输出 符合某种输出规范的print函数的应用 第一种方式 使用占位符.漫威里有个人叫斯塔克,他平时站在人堆里(print函数引号内的内容)我们看不出来和其他人有什么异常(print的终端显示), ...

  2. (翻译)Angular.js为什么如此火呢?

    在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...

  3. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  4. 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)

    (原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...

  5. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  6. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  7. Angular.js为什么如此火呢?

    在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...

  8. JS 学习笔记--5---对象和数组

    1.Object类型(引用类型) 不具备多少功能,但是对于在ECMAScript中存储和传递数据确实,确是很理想的选择. 创建方式:(1).使用new Object();方式创建对象,然后对对象进行设 ...

  9. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

随机推荐

  1. Django之FBV和CBV的用法

    FBV FBV,即 func base views,函数视图,在视图里使用函数处理请求. 以用户注册代码为例, 使用两个函数完成注册 初级注册代码 def register(request): &qu ...

  2. Xpath定位和CssSelector定位的区别

    1.Xpath基本语法: (1)"/":从根节点选取,下级节点 (2)"//":任意节点选取 (3)"*":任意标签选取 (4)" ...

  3. Net基础篇_学习笔记_第九天_数组

    结构:一次性存储不同类型的变量: 数组:一次性存储相同类型的变量: 数组的语法: 数组类型[ ] 数组名=new 数组类型[数组长度]: int[ ] nums=new int[10]; 数组初值都是 ...

  4. 阿里云 centos7 64位搭建JAVA环境-----安装mysql(1)

    一开始用的是阿里云镜像市场的JAVA集成环境,但是配置了好长时间配置不成功.索性就换成了纯净系统从零开始搭建JAVA环境. 镜像:centos_7_04_64_20G_alibase_20170101 ...

  5. 记一次神奇的sql查询经历,group by慢查询优化

    一.问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询. 简单来说,就是查询一定条件下, ...

  6. Linux 笔记 - 几个常用且重要的命令

    博客地址:http://www.moonxy.com Linux 系统中提供了大量的命令,从文件目录管理,用户管理,到系统监控等等,功能非常丰富,但有几个是常用且重要的命令. 1. 命令 grep 作 ...

  7. Failed to access IIS metabase.

    framework4.0 可这样 C:\Inetpub\AdminScripts>cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ C:\WIN ...

  8. Set集合、List集合

    集合体系:Collection.Map接口 存储数量不等的多个对象,不能存储基本数据类型,如存储基本数据类型会自动装箱 ======================================== ...

  9. JVM的一些工具的简要使用

    JConsole(可视化工具) 运行 JConsole内存监控 测试代码 import java.util.ArrayList; import java.util.List; public class ...

  10. 将字符串转换成json格式

    1.引入json依赖,在pom.xml文件里添加如下内容 <!--Json array start --> <dependency> <groupId>common ...