美文网首页
JavaScript中数据类型的种类以及转换

JavaScript中数据类型的种类以及转换

作者: 流浪的三鮮餡 | 来源:发表于2019-04-25 10:14 被阅读0次

    JavaScript的数据类型

    1. 基本数据类型-值类型
    • String字符串 "abcd" '你好,世界'
    • Number数字 10进制,2进制、8进制、16进制
    • boolean值: true false
    • null 空指针 obj = {}; obj = null;
    • undefined 未定义值,定义变量,未赋初值
    2. 复合数据类型-引用类型
    • 对象Object (内置对象、自定义对象)
    3. 区别

    基本数据类型 只能存储单个数据
    复合数据类型 可以存储多个相关联的数据

    4. 数据类型转换
    • 字符串 -> 数字
      • Number( str )
      • str - 0 | str * 1 | +str
      • parseInt | parseFloat
      • new Number( str )
      • 2 > 3 > 1 > 4
    • 数字 -> 字符串
      • String( num )
      • num + ''
      • num.toString()
      • new String( num )
      • 2 > 3 > 1 > 4
    • 其他 -> boolean值
      • 非0数字 -> true
      • 非空字符串 -> true
      • null和undefined -> false
      • 对象 -> true
      • 转换方式:!![variable]
    • 隐式的基本数据类型和其包装类型之间的转换

    获取数据类型的方式

    1. 方式
    • typeof : 准确的获取字符串、数字、bool值的类型
    • instanceof: 判断某个对象是否为 指定的构造函数的实例

    值类型与引用类型

    1. 值类型包含:数字 字符串 boolean值

    2. 引用类型包含:对象

    3. 在做参数传递,即给函数传参,或者给其他变量赋值,值类型 是 赋值变量的值本身,将拷贝后的值,赋值给其他变量;
      而引用类型,是将变量存储对象的指针拷贝给其他变量,此时两个变量指向同一个对象。

    内置对象的常用方法

    1. 字符串

    检索:indexOf、match、search
    替换:replace、splice
    截取:substr、substring、slice
    切割:split

    1. 数组

    添加:push、unshift
    删除:pop、shift、splice
    截取:slice
    合并:concat
    拼接:join
    ES5:indexOf、forEach、map...

    1. Math对象
      Math常见属性
      π: Math.PI
      开平方:Math.sqrt
      正弦: Math.sin
      余弦: Math.cos

    2. 日期Date对象

    • getHours
    • getMinutes()
    • getSeconds()
    • getMilliseconds()
    • getDay()
    • getFullyear()
    • getMonth() 0-11
    • getDate() 1-31
    • setMilliseconds()
    1. 其他

    DOM相关属性和方法

    1. 相关属性
    • innerHTML
    • firstChild
    • lastChild
    • nextSibling
    • previousSibling
    • parentNode
    • childNodes
    • nodeName
    • nodeType 12种
      • 1 元素节点
      • 2 属性节点
      • 3 文本节点
      • 8 注释
      • 9 文档document
      • 11 文档片段documentFragment
    • nodeValue
    1. 方法

    插入节点:
    parentNode.appendChild( node );
    parentNode.insertBefore( new node, node );

    删除节点
    parentNode.removeChild( node );

    替换
    parentNode.replaceChild( new node, old node );

    创建节点
    document.createElement( 'tagName' ); 创建元素节点
    document.createTextNode( 'txt' ) 创建文本节点

    查询节点
    document.getElementById( 'id' )
    document.getElementsByTagName( 'tagName' )
    document.getElementsByName( 'name' )

    == 和 === 区别

    1. == :先将==两边的操作数统一成一种数据类型,再比较。
      类型转换规则:
      如果运算符两边的操作数,只有一个操作数类型为数字,那么将第二个操作数转换成数字;
      如果运算符两边的操作数,只有一个操作数类型为bool值,那么将其转换成数字;
      如果运算符两边的操作数,只有一个操作数类型为对象,那么将其转换成基本数据类型(优先使用valueOf,失败后在使用toString方法);

    2. ===: 不需要做类型转换,直接比较。

    对象的概念

    1. 对象 就是 无序的键值对集合。
      对象:是对现实事物的抽象,从而提取出一些相关属性的集合。用一种结构来存储。那么这种结构 就是 对象

    创建对象的方式

    1. 直接量

    var arr = []; <==> var obj = new Array();
    var obj = {}; <==> var obj = new Object();

    1. 构造函数

    function Person () {

    }

    var p = new Person();

    劣势:如果在使用构造函数时,不小心没有配合new操作符,那么就会造成意外的结果
    1、 无法创建对象; 2、会造成全局对象的污染;

    1. 工厂函数

    将创建对象的过程封装在一个函数内部,再将创建出来的对象,作为该函数的返回值。这种实现创建对象的方式成为工厂模式。

    如果在工厂函数内部创建对象时,使用直接量方式,那么对象的类型会被弱化;
    相反,如果在意对象的类型,可以在工厂函数内部使用构造函数来创建对象。

    1. 工厂模式 与 构造函数
    • 工厂模式 不管是否 带new 都可以创建对象,并且不会造成全局对象的污染
    • 构造函数创建对象时,必须使用new,而且给对象添加属性,要使用this
    • 工厂模式 在给对象添加属性时,要使用内部创建出来的对象,而不是this

    面向对象概念

    js不是面向对象语言。学习面向对象思想 是为了模拟其编程思想,实现代码的复用。

    1. 面向过程:要按部就班的书写代码,有些代码的书写顺序不能改变。
    • 缺点:难以维护、难以扩展、代码复用
    1. 面向对象:在实际开发解决一个问题时,首先看是否已存在一个对象可以帮助解决,如果有,就使用该对象解决问题;
      如果没有,就实现一个对象去解决该问题,以后如果在遇到同类问题,就可以找到该对象来解决。

      • 优点:代码复用
    2. 区别
      身份:前者 —> 执行者; 后者 -> 管理者
      实现:前者:亲力亲为,按部就班的实现
      后者:在实现功能时,可以交给其他对象去完成。

    相关文章

      网友评论

          本文标题:JavaScript中数据类型的种类以及转换

          本文链接:https://www.haomeiwen.com/subject/rdhagqtx.html