首页 阅读DAY3 JavaScript高级程序设计 4章
文章
取消

阅读DAY3 JavaScript高级程序设计 4章

开始阅读JavaScript高级程序设计(第5版)学习JS,总共有1000+页,非常全面,短期看完不太现实,找到了一篇博客,花些时间跟着这篇博客过一下红宝书。

JavaScript高级程序设计(第5版)微信读书

红宝书《JavaScript高级程序设计(第5版)》学习大纲 - 大前端全栈开发 - SegmentFault 思否

相比于其他语言,JavaScript中的变量可谓独树一帜。正如ECMA-262所规定的,JavaScript变量是松散类型的,而且变量不过就是特定时间点一个特定值的名称而已。由于没有规则定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命期内可以改变。这样的变量很有意思,很强大,当然也有不少问题。

原始值和引用值:

ECMAScript变量可以包含两种不同类型的数据:原始值(primitive value)就是最简单的数据,引用值(reference value)则是由多个值构成的对象。在把一个值赋给变量时,JavaScript引擎必须确定这个值是原始值还是引用值。保存原始值的变量是按值(by value)访问的。

引用值是保存在内存中的对象。与其他语言不同,JavaScript不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象时,实际上操作的是对该对象的引用(reference)而非实际的对象本身。为此,保存引用值的变量是按引用(by reference)访问的。

动态属性:

对于引用值而言,可以随时添加、修改和删除其属性和方法。

这里,首先创建了一个对象,并把它保存在变量person中。然后,给这个对象添加了一个名为name的属性,并给这个属性赋值了一个字符串 “Alice”。在此之后,就可以访问这个新属性,直到对象被销毁或属性被显式地删除。

1
2
3
let person = new Object();
person.name = "Alice";
console.log(person.name); // "Alice"

原始值不能有属性,尽管尝试给原始值添加属性不会报错。 在此,代码想给字符串name定义一个age属性并给该属性赋值27。紧接着在下一行,属性不见了。只有引用值可以动态添加后面可以使用的属性。

1
2
3
let name = "Alice";
name.age = 27;
console.log(name.age);  // undefined
本文由作者按照 CC BY 4.0 进行授权

放一些速查优质链接

-