js基本类型和引用类型

1,基本类型

Number ,String,Boolean,Undefined,Null

2,引用类型

Object, Array,Function,Date

3,基本类型和引用类型的区别

1,内存分配方式不同
基本类型存储在栈的数据段中,因为他们占据的空间是固定的,也方便迅速查询变量的值
引用类型存储在堆中,变量是引用了他的指针来进行访问,因为他们的值的大小会改变,所以分配在堆中

2,两种类型在添加属性时候的区别
引用类型可以动态的给添加属性
基本类型的值是不可变
(值不可变比如说)

var name = 'jozo';
name.toUpperCase(); // 输出 'JOZO'
console.log(name); // 输出  'jozo'
//会发现原始的name并未发生改变,而是调用了toUpperCase()方法后返回的是一个新的字符串。

3,在复制的时候会有不同
基本类型在复制的时候,回创建一个新的值,再把这个值赋给新变量
引用类型在复制的时候,不会创建新的值,而是复制一个自己的指针赋给新变量

es6新增类型symbol``使得对象的属性名不仅可以是字符串,也可以是sybol类型

ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。
Symbol,表示独一无二的值。

// Symbol的使用
    var mySymbol = Symbol()
    a = {
        [mySymbol]: 'aaaaa',
        name: 'kangyi'
    }
    console.log(a.mySymbol);  //undefined
    console.log(a[mySymbol]);  //aaaaa   取值的时候只能用中括号,不能用点运算符

Symbol值作为对象属性名时,不能用点运算符。
Symbol值作为对象属性名时,不会出现在for in ,for of 遍历中,也不会被Object.key(),Object.getOwnPropertyNames获取。
但是Object.getOwnPropertySymbols方法,可以返回当前对象包含的用作属性名的Symbol值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值