美文网首页
你有“对象”吗

你有“对象”吗

作者: 悄敲 | 来源:发表于2019-02-25 23:57 被阅读0次

    ECMAScript是一门面向对象的编程语言,它基于原型,以对象作为其核心概念。(对象很重要,无论对编程语言,还是对人)

    对象是某个特定引用类型的实例,也称作引用类型的值,而引用类型在ES中是一种数据结构,用于将数据与功能组织在一起,类似“类”的概念。

    定义: 对象属性的集合,并且有一个原型对象。原型要么是一个对象,要么是null值。(原型对象用于以动态调度机制实现继承)。

    对象具有以下几个特点:

    (1)唯一标识性:即使属性完全相同的两个对象,也并非同一个对象。(一般唯一标识性是通过对象的内存地址来体现的);

    (2)对象有状态:同一对象可能处于不同的状态中;

    (3)对象有行为:对象的状态可能因为其行为产生变化。

    对于状态和行为,在Java中的对应术语为“属性”和“方法”;不过在JS中,只有一个术语,叫“属性”。此外,JS中对象独有的特色是:对象具有高度的动态性,可以在运行时为对象添加或者修改其状态或行为。

    更多关于JS的对象介绍,请看JS对象。

    一个对象的原型是被内部的[[Prototype]]属性引用,通过__proto__属性暴露给用户级代码。先看一个简单的对象示例,其结构中带有两个显式的自有属性( x和y)和一个隐式的__proto__属性(__proto__属性是对point的原型的引用)

    图一    一个简单的对象
    图二     带有原型的基本对象

    对象可通过执行new操作符后跟要创建的对象类型名称来创建,如  var o = new Object();

    Object类型,是所有对象的基础,其具有的任何属性和方法也存在于所有对象中。Object的每个实例都具有以下基本属性或方法:

    (1)constructor: 保存用于创建当前对象的函数。

    (2)hasOwnProperty(propertyName):用于检查给定属性是否存在当前对象实例中(不会在原型链中上溯)。

    (3)isPrototypeOf(object): 用于检查传入的对象是否是另一个对象的原型。

    (4)propertyIsEnumerable(propertyName):用于检查指定属性能否使用 for-in 语句来枚举。

    (5)toLocalString(): 返回对象的字符串表示,与执行环境有关。

    (6)toString(): 返回对象的字符串表示。

    (7)valueOf(): 返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同。


    Notes: typeof 操作符用来检测给定变量的数据类型。

    (1) typeof null = "object",因为null被认为是一个空的对象引用;

    (2)typeof 一个函数 = "function",虽然函数在ECMAScript中也是对象,但因为它具有特殊属性,有必要与其他对象区分开来。

    (3)null == undefined 是成立的(ECMA-262规定的)

    相关文章

      网友评论

          本文标题:你有“对象”吗

          本文链接:https://www.haomeiwen.com/subject/ujqoyqtx.html