Skip to content

ordinary 和 exotic #8

@bitfishxyz

Description

@bitfishxyz

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代码时,用不到,知道一下就行了。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions