Object.hasOwnProperty(V:*=null):Boolean
- 指示对象是否已经定义了指定的属性。如果目标对象具有与
name
参数指定的字符串匹配的属性,则此方法返回true
;否则返回false
。以下类型的属性导致该方法对属于类实例的对象(而不是类对象)返回true
:- 固定实例属性 — 对象类定义的非静态变量、常量或方法;
- 继承的固定实例属性 — 对象类继承的变量、常量或方法;
- 动态属性 — 对象实例化后添加到其中的属性(在其类定义之外)。要添加动态属性,必须用
dynamic
关键字声明对象的定义类。
以下类型的属性导致该方法对属于类实例的对象返回
false
:- 静态属性 -- 在对象的定义类或其任何超类中使用静态关键字定义的变量、常量或方法;
- 原型属性 -- 在原型对象上定义的属于对象原型链一部分的属性。在 ActionScript 3.0 中,虽然原型链不用于类继承,但仍可作为继承的一种替代形式存在。例如,Array 类的一个实例可以访问
valueOf()
方法,因为它位于属于 Array 类原型链一部分的Object.prototype
上。虽然可以在 Array 实例中使用valueOf()
,但对该实例返回的hasOwnProperty("valueOf")
值为false
。
ActionScript 3.0 还包含类对象,它是类定义的直接表示形式。调用类对象时,仅当属性是该类对象中定义的静态属性时,
hasOwnProperty()
方法才返回true
。例如,如果创建名为 CustomArray 的 Array 子类,并在 CustomArray 中定义一个名为foo
的静态属性,对CustomArray.hasOwnProperty("foo")
的调用则返回true
。然而,对于在 Array 类中定义的静态属性DESCENDING
,对CustomArray.hasOwnProperty("DESCENDING")
的调用返回false
。注意:Object 类的方法是在 Object 的原型上动态创建的。要在 Object 的子类中重新定义该方法,请不要使用
override
关键字。例如,Object 的一个子类实现function hasOwnProperty():Boolean
而不使用基类覆盖。 - 参数:
- name 对象的属性。
- 返回:
- 如果目标对象具有
name
参数指定的属性,则该值为true
;否则为false
。 - 语言版本:
- 3.0
- Player 版本:
- Flash 9, AIR 1.0