-
最新的 ECMAScript 标准定义了 7 种数据类型:
2. 简单了解到JavaScript的7种数据类型,下面咱们来详细介绍下Object数据类型。
在JavaScript语言中,全部的类最底层的原型链都会指向Object的原型。所以基本上全部的类都继承了Object原型方法。也得此缘由Object数据类型又能够分解以下。
-
Array (数组类型)
-
-
Date (时间类型)
-
JSON (json格式数据,浏览器内置对象)
详情
-
-
-
3. 以上详细列举了JavaScript中的Object数据类型。那么顺便来谈一谈引用类型。什么是引用类型啦,它又有什么做用呢。
//基础类型数据
var a = 'zhangxiao',
b = 123,
c = true;
//Object类型数据
var d = {name:"zhangxiao",age:27,isMarry:false},
d1 = [d];//将d放入d1数组中
console.log(d, '\n', d1, '\n', d2);
// {name:"zhangxiao", age:27, isMarry:false}
// [{name:"zhangxiao", age:27, isMarry:false}]
//修改基础类型数据
var e = a,
f = b,
g = c;
e = 'zx',
f = 321,
g=false;
console.log(a, b, c, '----', e, f, g);
// 'zhangxiao', 123, true, ----, 'zx', 321, false
//修改Object类型数据
var h = d,
d2 = d1.concat(); //浅复制d1数组
h['isMarry'] = true;
d2[0]['name'] = 'zx';
//引用类型的数据改变,其全部指向引用的数据均改变,基础类型改变,并不引发其余原始数据改变
console.log(h, '\n', d, '\n', d1, '\n', d2, '\n', d1===d2, '\n', d1[0]===d2[0]);
// {name:"zx",age:27,isMarry:true}
// {name:"zx",age:27,isMarry:true}
// [{name:"zx",age:27,isMarry:true}]
// [{name:"zx",age:27,isMarry:true}]
// false /** 由于d2是有d1数组链接生成的新数组,等同于浅拷贝,故d1和d2是两个不一样数组 */
// true /** 由于d2是d1浅拷贝,而d1中的元素是Object类型,故d2的元素是引用的d1元素也所以是同一元素 */复制代码
那么看到以上的引用事后是否是会想到它有什么用呢,怎么用它!
在此我在给你们举个例子,Vue是当前用的比较火的一个框架,想必你们必定遇到过父子组件间通讯的问题,除了运用Vue提供的 $emit,还能够运用上述所说的引用方式通讯。子组件修改数据,父组件也跟随修改,由于子组件的数据是经过引用方式得到。这样的通讯高效简洁,Vue官方也非常推荐。固然它的用途不只体现如此,还好比函数传参,如a函数想修改b函数的变量,这时运用引用也是很恰当的。