【注意】
1.访问字符串属性(方法)的时候创建的“封装类型对象”是不可见的
2. 只有访问一个保存了基本类型值的变量才会创建“封装类型对象”! 对于“直接的值”是不会创建封装类型对象的
例如:
console.log(1.toString()); // 报错!! 不能直接对值操作 a = 1; console.log(a.toString()); // 输出1
闲话javascript类型转换
字符串转数字
字符串转为数字有两种方式:
1. 通过Number()转化
2. 通过parseInt解析
两者的不同:
1. Number: 当字符串内容包括数字外的内容时候(如"42px"),转化失败返回NaN
2. parseInt: 当字符串内容包括数字外的内容时候, 返回当前从左往右解析成功的数字
; ; Number( a ); // 42 parseInt( a ); // 42 Number( b ); // NaN parseInt( b ); // 42
其他类型转化为字符串
可调用toString方法转化
var a = [1,2,3]; a.toString(); // "1,2,3"
a = 1; console.log(a.toString()); // 输出 字符串的1
【注意】对undefined和 null 这两个特殊的类型你无法调toString(),因为它们根本就没有这个方法
var a = undefined; console.log(a.toString()) // 报错!根本找不到方法!
var b = null; console.log(b.toString()) // 报错!根本找不到方法!
###当然很多时候我们会用更直接的方法: XXX + ""(加一个空串)去实现隐式的类型转化
JSON对象转化为字符串
(啊!首先我要先喊一句JSON大法好!)
我们知道,强大的JSON.stringify可以将许多值转化为字符串, 但仅限于JSON安全的值(JSON-safe)
如:
JSON.stringify( 42 ); // "42" JSON.stringify( ); // ""42"" (含有双引号的字符串) JSON.stringify( null ); // "null" JSON.stringify( true ); // "true"
对于非JSON安全的值(function, undefined和Symbol)
JSON.stringify却避之唯恐不及
对这些值:
JSON.stringify( undefined ); // undefined JSON.stringify( function(){} ); // undefined
JSON.stringify( [1,undefined,function(){},4] ); // "[1,null,null,4]"
JSON.stringify( { a:2, b:function(){} } ); // "{"a":2}"
现在你应该知道为什么JSON.parse(JSON.stringify(XXX))这种深拷贝的神操作要求XXX对象里面不能有函数了吧
什么叫JSON安全的值(为什么函数“不安全”?)
你以为我会说答案? 对不起我也不知道 [哭脸], 不过等我继续努力学习,知道了后会来告诉大家的.....(或者评论区有高人的话帮忙一下咯)
console对象,window对象,DOM元素对象并不被javaScript真正“拥有”
javascript一般是不能独立运行的, 而要依赖于宿主环境,常见的宿主环境有:
1. 浏览器 (最常见)
2. node
console对象对许多JSer们来说都很熟悉, 一般想到console你可能便会不由自主地想起“console.log”这个刻骨铭心的方法(当然现在基本调试都用debugger了嘿嘿。。。)
console对象,window对象,DOM元素对象并不被javaScript真正“拥有”
console对象
正因为console和JS的联系如此的 密切, 所以一些人可能误以为console对象是JS标准里的东西。
这里我要说一句:
console对象并不是属于JS的而是浏属于浏览器的