js中的自动包装机制
有一行语句:
1.toString() //error
那么问题来了,为什么报错?
我的第一想法就是1是一个基本类型,所以它没有toString方法
嗯,理直气壮
接下来有大佬show me code
let n = 1
n.toString() //1
这有点小尴尬
我突然想起来之前Java中基本类型与之对应包装类的自动包装和自动拆包
1 //自动装箱
2 Integer total = 99;
3
4 //自动拆箱
5 int totalprim = total;
比较一下
ps:由于js中弱类型 所以没法声明变量其类型
// 重头戏 自动装箱
let n = 1
n.toString()
// 自动拆箱
let nObj = new Number (1)
let r = nObj + 1 //r = 2
// 等同于这一行 nObj方法用于获取Number包装类包装的value值
let r = nObj.valueOf() +1
我们可以做一个验证
new Number(1).toString() // 1 pass
嗯,我尝试打断点跟踪错误关键点
失败了,所以我写了一段小代码来帮助我们分辨
(function (rest) {
rest.forEach( e => {
try{
e.toString()
} catch(e) {
console.log(e)
}
})
})([undefined, null, true, 1, '2', {}, Symbol('3')])
这里只有undefined null 被以变量形式访问仍然toString报错
这里可以按照转换为包装类的理解 Boolean Number Symbol
而undefined 和 null 虽然使用Objcet.prototype.toString().call(type) 可以得到Undefined 、 Null 这两种类型 undefined 、 null 作为对应类型的唯一专用值(ECMAScript 原型类型定义)
js中的自动包装机制的更多相关文章
- 别再为了this发愁了------JS中的this机制
别再为了this发愁了------JS中的this机制 题记:JavaScript中有很多令人困惑的地方,或者叫做机制.但是,就是这些东西让JavaScript显得那么美好而与众不同.比方说函数也是对 ...
- 再次讲解js中的回收机制是怎么一回事。
在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...
- 关于js中的回收机制,通俗版
在前面的几篇文章中,我讲解过了js中的回收机制,但是对于当时的我来说,我自己对回收机制的这个概念也有些懵懵懂懂,现在对回收机制有了更深入的理解,所以特此发布此文给于总结,也好加深记忆. 如果你想学习闭 ...
- 次讲解js中的回收机制是怎么一回事。
在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...
- [转] js中的钩子机制(hook)
什么是钩子机制?使用钩子机制有什么好处? 钩子机制也叫hook机制,或者你可以把它理解成一种匹配机制,就是我们在代码中设置一些钩子,然后程序执行时自动去匹配这些钩子:这样做的好处就是提高了程序的执行效 ...
- 别再为了this发愁了:JS中的this机制
题记:JavaScript中有很多令人困惑的地方,或者叫做机制.但是,就是这些东西让JavaScript显得那么美好而与众不同.比方说函数也是对象.闭包.原型链继承等等,而这其中就包括颇让人费解的th ...
- JS中的this机制
1.this是啥? 简言之,this是JavaScript语言中定义的众多关键字之一,它的特殊在于它自动定义于每一个函数域内,但是this倒地指引啥东西却让很多人张二摸不着头脑.这里我们留个小悬念,希 ...
- JS中的存储机制
一.堆和栈的介绍 1.堆和队,是先进先出:栈,是先进后出,就跟水桶差不多: 2.存储速度:堆和队的存储速度较慢,栈的存储速度较快,会自动释放: 二.js中存储的类型 1.堆,一般用于复杂数据类型,存储 ...
- JS中的执行机制(setTimeout、setInterval、promise、宏任务、微任务)
1.执行机制 JS 是单线程的,处理 JS 任务(程序)只能一个一个顺序执行,所以 JS 中就把任务分为了同步任务和异步任务.同步的进入主线程先执行,异步的进入Event Table并注册函数,当指定 ...
随机推荐
- 【Oracle】重做undo表空间
重做undo表空间 场景: alert日志,报了如下错误: [oraprod@arpinfo bdump]$ tail -f alert_PROD.log Errors in file /ora115 ...
- RC4算法
RC4算法简介:https://baike.baidu.com/item/RC4%E7%AE%97%E6%B3%95/9686396?fr=aladdin RC4算法java实现: /** * RC4 ...
- plsql developer启动变慢的原因
导致原因 在plsql developer工具里面有打印的选项,进入打印设置后会调用打印机设置,显示所有已创建的打印机连接.如果当前电脑默认打印机是网络打印机,并且此网络打印机处于不可用状态时,那么p ...
- java.lang.NoClassDefFoundError: javax/el/ELManager
今天搭建一个ssm框架的项目,报了一个令我怀疑人生的错误: java.lang.NoClassDefFoundError: javax/el/ELManager 网上说出现这种错,大概有以下两个原因: ...
- LinkedHashMap 的核心就 2 点,搞清楚,也就掌握了
HashMap 有一个不足之处就是在迭代元素时与插入顺序不一致.而大多数人都喜欢按顺序做某些事情,所以,LinkedHashMap 就是针对这一点对 HashMap 进行扩展,主要新增了「两种迭代方式 ...
- 2019-11-29-WPF-客户端开发需要知道的触摸失效问题
原文:2019-11-29-WPF-客户端开发需要知道的触摸失效问题 title author date CreateTime categories WPF 客户端开发需要知道的触摸失效问题 lind ...
- mvc视图双下拉框联动
html部分的代码 <tr class="trs"> <td class="item1"><div class="ite ...
- ES6 模块(八)
在node环境中运行需要使用babel命令将ES6代码转换为ES5代码再执行相关文件使用命令直接将src目录下所有ES6代码转换ES5代码到dist目录下: $ babel src --out-dir ...
- CRM产品主数据在行业解决方案industry solution中的应用
AG3, choose this role: Create a new Acquisition Contracts: Here our product advances search will be ...
- 2.redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
作者:中华石杉 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的 ...