什么时候对数组使用 hasOwnProperty?

When would you use hasOwnProperty on an array?

刚刚看到一个例子,代码如下:

var schemaSet:Array = currentScope();
if (schemaSet.hasOwnProperty("current"))
    schema = schemaSet["current"];

我以前从未见过这个。我检查了 as3 文档,但没有找到任何相关信息。注意:此代码来自 Adob​​e 员工编写的 SchemaManager.currentSchema()。

您会在何时何地使用它?这是否优于或等同于:

if (schemaSet.indexOf("current")!=-1)

有两种类型的数据:

  • 普通数组,只包含值,键是数字,从0开始。

  • 还有对象,其中每个元素都有一个字符串(也可以是数字)键。

如果你想检查一个数组是否包含一个值,你将使用 .indexOf() 方法。

var myArray = ["a", "b", "c"];

if (myArray.indexOf("a") > -1) return true;

如果你想检查一个对象是否有一个带有特定键的元素,那么你将使用 hasOwnProperty() 方法。

var myObject = {a: "letter a", b: "letter b"}

if (myObject.hasOwnProperty("a")) return true;