HTML5技术

【javascript】详解变量,值,类型和宿主对象 - 外婆的彭湖湾(3)

字号+ 作者:H5之家 来源:H5之家 2017-09-03 13:26 我要评论( )

【注意】 1.访问字符串属性(方法)的时候创建的封装类型对象 是不可见的 2. 只有访问一个保存了基本类型值的变量才会创建封装类型对象! 对于直接的值 是 不会创建封装类型对象的 例如: console.log( 1 .toString

【注意】
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却避之唯恐不及


对这些值:

  • 作为单个值使用的时候会一律返回undefined
  • JSON.stringify( undefined ); // undefined JSON.stringify( function(){} ); // undefined

     

  • 在数组中出现会将其重置为null
  • 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的而是浏属于浏览器的

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~ - 外婆的彭湖湾

      【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要

      2017-08-16 11:00

    • 【javascript】详解javaScript的深拷贝 - 外婆的彭湖湾

      【javascript】详解javaScript的深拷贝 - 外婆的彭湖湾

      2017-08-15 12:01

    • 一次浴火重生的MySQL优化(EXPLAIN命令详解) - 禁心尽力

      一次浴火重生的MySQL优化(EXPLAIN命令详解) - 禁心尽力

      2017-08-02 14:00

    • AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 - 我叫小熊

      AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 -

      2017-07-12 11:01

    网友点评
    o