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

我们来看一下这段简单的代码,可能有的人会问这有啥,不就是新建一个字符串然后调用字符串上的方法嘛,其实这里面还是有点馅的,下面让我们来尝一尝究竟是什么馅料
首先在JS里面字符串是属于基本数据类型的,那为何基本数据类型上会有方法呢,我套你个猴子的,有方法那不是成对象了。
要解释这个问题我们就不得不提JS里面的一种机制,封装对象的包装与拆装,即装箱与拆箱。
装箱:
当我们在基本数据类型上调用方法的时候,JS会默认进行装箱操作。啥叫装箱呢,下面让我来操作一波好吧。
相信在座的各位或多或少都看过铠甲勇士吧,铠甲勇士一般的桥段就是ERP研究室基地发现有小怪兽出现了,会通知铠甲勇士,此时此刻他们大喊一声铠甲合体!就由一个普通人变为了铠甲勇士,什么火焰拳之类的在普通人状态没有的技能统统都来了!

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

拆箱:
当技能被放了,小怪兽被消灭了完了怎么办呢,当然是取消铠甲合体变回一个普通人咯。JS也这样的,函数也调用完了是吧,调完了就给拆开,把变量重新变回一个基本数据类型的变量。
还有一点需要注意一下,装箱完了使用后会进行拆箱,就跟穿铠甲打完小怪兽装完***后总得解除合体吧,如果一直穿着可就显得有点呆滞了啊!
结语:
好了,今天就先到这里了,上午看到有人说技术文章不应该扯很多废话,个人认为分情况吧,如果多扯几句能记忆更深刻,理解的更透彻,那何乐而不为呢,大家怎么看呢
JS里面的铠甲合体!的更多相关文章
- python-day5(正式学习)
格式化输出 符合某种输出规范的print函数的应用 第一种方式 使用占位符.漫威里有个人叫斯塔克,他平时站在人堆里(print函数引号内的内容)我们看不出来和其他人有什么异常(print的终端显示), ...
- (翻译)Angular.js为什么如此火呢?
在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...
- 【vue.js权威指南】读书笔记(第二章)
[第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...
- 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)
(原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...
- 2015 前端[JS]工程师必知必会
2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...
- [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...
- Angular.js为什么如此火呢?
在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...
- JS 学习笔记--5---对象和数组
1.Object类型(引用类型) 不具备多少功能,但是对于在ECMAScript中存储和传递数据确实,确是很理想的选择. 创建方式:(1).使用new Object();方式创建对象,然后对对象进行设 ...
- JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)
String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...
随机推荐
- ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
之前的ResourceDictionary主题资源替换(一)通过加载顺序来覆盖之前的主题资源,介绍了WPF框架对ResourceDictionary资源的合并规则. 此篇介绍一种在编译期间,实现资源替 ...
- CommonsMultipartFile 转为 File 类型
1.我们可以查看CommonsMultipartFile的源码发现有这样一个方法 @Override public InputStream getInputStream() throws IOExce ...
- ExpandableListView之BaseExpandableListAdapter
之前使用的SimpleExpandableListAdapter有较大局限性,样式单一,修改难度大,这里不建议使用,而是利用BaseExpandableListAdapter,其实SimpleExpa ...
- SpringBoot + Jpa(Hibernate) 架构基本配置
1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...
- netCDF4 not installed properly - DLL load failed (netCDF4安装问题)
环境描述:windows10 ,conda,python3.6 问题描述:netCDF4是python中用来处理地球气象数据的文件读取包,在安装完成后,from netCDF4 import Data ...
- 单例模式-全局可用的 context 对象,这一篇就够了
单例模式在各个方面都有着极为广泛的使用,所谓单例,顾名思义就是整个程序中只有一个该类的实例,所以它成功保证了整个程序的生命周期内该类的对象只能创建一次,并且提供全局唯一访问该类的方法:getInsta ...
- 如何免费使用GPU跑深度学习代码
从事深度学习的研究者都知道,深度学习代码需要设计海量的数据,需要很大很大很大(重要的事情说三遍)的计算量,以至于CPU算不过来,需要通过GPU帮忙,但这必不意味着CPU的性能没GPU强,CPU是那种综 ...
- linux mysql中文乱码解决
测试的机器是ubuntu 12.04个别linux发行版可能略有不同. 登陆mysql查看当前字符集命令: mysql> show variable like '%char%'; +------ ...
- Julia初学备忘
println("hello!") println("hello!") print("hello!") print("hello! ...
- Eureka参数配置->Client端参数
1.基本参数配置列表: 参数 默认值 说明 eureka.client.availability-zones 告知client有哪些region及availability-zones,支持配置 ...