🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
根据访问方式,在ES中可以将数据分为两种类型,值类型和引用类型。 * 值类型的数据可以被直接访问。 * 引用类型的数据只能被间接访问。 ![](https://box.kancloud.cn/6e6c1298d84f22082366d5cd91fe4052_1302x648.png) 当我们在谈值和对象的时候是在谈些什么呢? 一言概之,如写程序是工作的具体实例,值就是值类型的具体实例,对象就是引用类型的具体实例。 以下是典型的0值和空白对象。 ~~~ console.dir(0); console.dir({}); ~~~ ![](https://box.kancloud.cn/229ed49e1fe12880c2f9d6b008489f68_181x52.jpg) 在ES中,凡是对象都有其原型,在数据上的表示就是\_\_proto\_\_引用。 关于原型的概念将在后续章节讲解。 # 值和对象在使用上的区别 * 值是不可变的。 * 对象是值的组合,组合是可变的。 ~~~ var foo=1; foo=10;//不是值1变成了值10,而是foo选择的值变成了值10。 var obj={foo:1}; obj.foo=10;//对象的组合从{foo:1}变成{foo:10}; ~~~ **为什么要玩这种文字游戏?** 因为如此能让我们专注于一个简单的模型,而无视程序内部繁琐的操作。 ~~~ var str='hello' str[0]='x'; console.info(str);//hello ~~~ 在ES,String类型属于值类型,所以字符串不能被改变,所以他的“修改”方法总是返回一个新的字符串。 如concat,replace,slice……