前端之js数据类型常见考查点

目录

一、JS数据类型篇

1、Js数据类型

2、数据类型判断方法

3、深浅拷贝


一、JS数据类型篇

1、Js数据类型

  • 基本类型(number、string、boolean、null、undefined、symbol)
  • 引用类型(Array/Object/Function/Date等);

2、数据类型判断方法

  • typeof:返回的数据类型有‘undefined’/'number'/'string'/'boolean'/'number'/'object'/'function' ;(例子:typeof ‘123’ ,结果为‘string’)
  • instanceof :typeof中将null、array、object归为object;instanceof可以判断是否是某个具体类型;(例子:[1,2,3,4] instanceof Array,结果为true)
// 1、instanceof的用法

  例子:[] isntanceof Array

// 2、 手写版

function _instanceof(L,R){
    let R0 = R.prototype
    L = L.__proto__
    while(true){
        if(L === null) return false
        if(L.__proto__ === R0) return true
        L = L.__proto__
    }
}
  • Object.prototype.toString.call()可以直接返回某个对象的具体类型;(例子:Object.prototype.toString.call('1234') ,结果为 [object String])
  • 其他:constructor、jquery.type等;

3、深浅拷贝

  • 基本类型和引用类型的区别:前者是按值访问,存储在栈中;后者是按引用访问,指针存放在栈,数据存放在堆中;深浅拷贝是(只针对引用类型);
  • 深拷贝数组的方法:slice、concat、扩展运算符... 、Array.from;
  • 深拷贝对象的方法:Object.assign()(注:如果对象属性值是简单类型string、number,该方法是深拷贝,如果对象属性值有array、object这种类型的,该方法就是浅拷贝)、扩展运算符;
  • 深拷贝通用方法:JSON.stringify和JSON.parse();
  • 递归循环方法
        var obj = {
            id:1,
            name:'Andy',
            msg:{
                age:18
            },
            color:['pink','yellow']
        }
        var newobj = {}
        function deepCopy(newobj,obj){
            for(let key in obj){
                if(obj[key] instanceof Array){
                    newobj[key] = []
                    deepCopy(newobj[key],obj[key])
                }else if(obj[key] instanceof Object){
                    newobj[key] = {}
                    deepCopy(newobj[key],obj[key])
                }else{
                    newobj[key] = obj[key]
                }
            }
        }
        deepCopy(newobj,obj)
        console.log(newobj)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值