-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
ordinary 和 exotic
- ordinary [ 'ɔːrdnerɪ ] adj. 平常的 / 正常的 / 常任的 / 本身有权的
- exotic [ ɪɡ'zɑːtɪk ] adj. 外来的 / 非本国的 / 具有异国情调的 / 异国的
在ECMAScript中,有两种类型的对象,ordinary object和 exotic object。
前者表示普通的对象,定义是这样的:
object that has the default behaviour for the essential internal methods that must be supported by all objects.
ECMA中规定了所有的对象都有很多internal methods,如果一个对象完全遵守ECMAScript中为各个innernal methods规定的默认行为,那么这个对象就是ordinary object,意为普通的对象。
let obj = new Object();
let a = {
name: "Jon"
}像我们平时使用的对象字面量写法创建的对象,都是ordinary object。
exotic object的定义时这样的:
object that does not have the default behaviour for one or more of the essential internal methods.
如果一个对象有一些特殊的internal methods,那么它就是exotic object。
比如我们平时使用的数组,在JS中,数组也是对象。但是我们普通的对象显然不能使用下标的方式来访问它,但是数组可以。明显的,数组对象和一样的对象不同,它就是一个exotic object。
let arr = [1, 2, 3];
let body = document.body;另外,像一些宿主环境的对象,比如document对象,每当我们操作这个对象的时候,浏览器会把我们在JS代码中的行为立刻的反应到我们的html页面中,这是一般的object做不到的,所以document对象也是一个exotic object。
这一点了解就行了,在一般写JS代码时,用不到,知道一下就行了。