原型
原型本质上就是一个对象。
我们创建的每个函数都有一个 prototype 属性,这个属性是一个指针,指向一个对象。
我们创建的每个对象都有一个__proto__
属性,这个属性也是一个指针,指向一个对象。
举一个栗子来说明一下原型的概念:
首先,随意创建一个普通函数,这个函数有一个prototype属性,输出:
1 | function foo () { |
ES 标准是 JavaScript 核心,但是在 Web 中使用 JavaScript,BOM(浏览器对象模型)才是真正的核心。
W3C为了将浏览器中的 JavaScript 最基本的部分标准化,已经将 BOM 的主要方面纳入了 HTML5 规范。
数组中可能会存在空位
稀疏数组
具有不连续索引的数组,其length属性值大于元素的个数。
密集数组
具有连续索引的数组,其length属性值等于元素的个数。
在 JavaScript 中,数组本质上也是对象,是对象的一种特殊形式。数组索引实际上和碰巧是整数名的对象属性没有什么差别,不过数组的实现是经过了优化的,通过数组索引访问数组元素比访问一般对象的属性要快的多。规定数组索引的范围是 0 ~ 4294967294 (2 ^ 32 - 2)
, 所有的索引都是属性名, 但是只有在这个范围内的整数才是数组索引,数组索引会触发数组的特殊行为。