【数据类型】js的数据类型

栏目: JavaScript · 发布时间: 7年前

内容简介:基本数据类型包括:undefined, null,boolean,number,string引用类型是object:包括function,array,Date...【es6新增类型】

一、js的数据类型有基本数据类型和引用类型

基本数据类型包括:undefined, null,boolean,number,string

引用类型是object:包括function,array,Date...

【es6新增类型】

1. set 集合,区别于数组的就是 set中不可以有重复的数据,常可以用来做去重操作

  • 含有size属性,集合里元素的个数
  • add 方法,返回的是原对象改变后的值
  • delete方法,返回值是true/false
  • has('data1') 返回值是true/false
  • myset.keys(); myset.value()

【数据类型】js的数据类型

2. Map类型,与对象的区别是:对象的键值只能是字符串,不可以是对象类型,使用Map类型可以避免键值必须是字符串的限制,可以是对象,数组等

  • 创建的时候一个大的数组,每一项元素是小数组,小数组有两个元素,分别是一组对应的key,value。
  • 方法:
  • set(key,value); get(key);
  • delete(key); has(key); //返回值均是true/false
  • mymap.forEach(function (value,key) {
    console.log(key+":"+value);
    }) // 遍历,参数是value,key 【注意顺序】
  • mymap.set({},"obj1");
  • mymap.set({},"obj2"); 这是两个不同的键值,不会被覆盖

【数据类型】js的数据类型

3.Symbol类型 用相同的字符串做属性名命名的时候会发生命名冲突,使用Symbol产生的名字是不同的

  • Symbol 即便传入相同的参数,两者的值也是不一样的 例:Symbol('foo') !== Symbol('foo');
  • 如果想让两者相等,可以使用Symbol.for() 例 Symbol.for('bar') === Symbol.for('bar')
  • 但是 Symbol('bar') !== Symbol.for('bar');
    如果Symbol作为属性名,不会被Object.keys() Object.getOwnPropertyNames()、JSON.stringify()返回;该属性也不会出现在for...in、for...of循环中。但是,它也不是私有属性,有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有 Symbol 属性名。
    【数据类型】js的数据类型

typeof null返回值是 “object”,null会被认为是一个空对象的引用

null == undefined //true

当定义一个变量用来保存对象,就可以将这个变量初始化为null

实现继承

function Person(){}

function Student(){}

Student.prototype = new Person()

Student.prototype.constructor= Student

var bosn= new Student()

bosn instanceof Student //true

bosn instanceof Person // true

二、判断类型的方式

typeof | instanceof | Object.prototype.toString.apply()

  1. typeof: 适用于基本类型和function,object具体是数组还是对象识别不了,null也是别不了

    typeof [1,2]   // 'object'
    typeof '123'   //'string'
    typeof null     // 'object'
    typeof undefined  //'undefined'
    typeof function(){}   //'function'
    typeof new Object()  //'object'
  2. instanceof: 适合自定义对象和原生对象,检查prototype

    [1,2] instanceof Array  //true
  3. Object.prototype.toString.apply() 适合基本对象和内置对象,IE6、7、9中null和undefined 失效

【数据类型】js的数据类型

三、空数组的问题

[] == false   //true        任意值与布尔值比较,都会将两边的值转化为Number; Number([]) 为0    Number(false)也是0    所以[] == false 为true
   [] ==![]     // true          Number([]) = 0;  Number(![]) = 0 ;   所以 []==![] 为true
   new Array(1) == false;  //true    new Array(1)==> [empty]  ,  Number(new Array(1)) = 0   
   Boolean([])   //true
   if([]){console.log(1)}  //此时[] 是true
   NaN == NaN  // false   
   null == undefined  //true

四、Number强制转换数字

  1. 如果参数是Date对象,Number()会返回从1970年1月1日至今的毫秒数
    【数据类型】js的数据类型
  2. 如果字符串截去开头和结尾的空白字符后,不是纯数字字符串,那么最终返回结果为NaN。
  3. 数组转数字,如果数组长度大于1,返回NaN;数组只有一项,对第一项转数字;

【数据类型】js的数据类型


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code

Code

Charles Petzold / Microsoft Press / 2000-10-21 / USD 29.99

Paperback Edition What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of ......一起来看看 《Code》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具