JavaScript-使用对象
对象和属性
你可以在 for...in
语句中使用方括号标记以枚举一个对象的所有属性。为了展示它如何工作,下面的函数当你将对象及其名称作为参数传入时,显示对象的属性:
function showProps(obj, objName) {
var result = "";
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
result += objName + "." + i + " = " + obj[i] + "\n";
}
}
return result;
}
枚举一个对象的所有属性
有三种原生的方法用于列出或枚举对象的属性:
for...in
循环 该方法依次访问一个对象及其原型链中所有可枚举的属性。Object.keys(o)
该方法返回对象o
自身包含(不包括原型中)的所有可枚举属性的名称的数组。Object.getOwnPropertyNames(o)
该方法返回对象o
自身包含(不包括原型中)的所有属性 (无论是否可枚举) 的名称的数组。
使用Object.create方法
对象也可以用Object.create()
方法创建
// Animal properties and method encapsulation
var Animal = {
type: "Invertebrates", // 属性默认值
displayType : function() { // 用于显示 type 属性的方法
console.log(this.type);
}
}
// 创建一种新的动物——animal1
var animal1 = Object.create(Animal);
animal1.displayType(); // Output:Invertebrates
// 创建一种新的动物——Fishes
var fish = Object.create(Animal);
fish.type = "Fishes";
fish.displayType(); // Output:Fishes
对象属性索引
在 JavaScript 1.1 及之后版本中,如果你最初使用名称定义了一个属性,则你必须通过名称来访问它;而如果你最初使用序号来定义一个属性,则你必须通过索引来访问它。
这个限制发生在你通过构造函数创建一个对象和它的属性(就象我们之前通过 Car
对象类型所做的那样)并且显式地定义了单独的属性(如 myCar.color = "red"
)之时。如果你最初使用索引定义了一个对象属性,例如 myCar[5] = "25"
,则你只可能通过 myCar[5]
引用它。
这条规则的例外是从与 HTML 对应的对象,例如 forms
数组。对于这些数组的元素,你总是既可以通过其序号(依据其在文档中出现的顺序),也可以按照其名称(如果有的话)访问它。举例而言,如果文档中的第二个 <form>
标签有一个 NAME
属性且值为 "myForm"
,访问该 form
的方式可以是 document.forms[1]
,document.forms["myForm"]
或 document.myForm
。
比较对象
在 JavaScript 中 objects 是一种引用类型。两个独立声明的对象永远也不会相等,即使他们有相同的属性,只有在比较一个对象和这个对象的引用时,才会返回 true.
// 两个变量,两个具有同样的属性、但不相同的对象
var fruit = {name: "apple"};
var fruitbear = {name: "apple"};
fruit == fruitbear // return false
fruit === fruitbear // return false
// 两个变量,同一个对象
var fruit = {name: "apple"};
var fruitbear = fruit; // 将 fruit 的对象引用 (reference) 赋值给 fruitbear
// 也称为将 fruitbear“指向”fruit 对象
// fruit 与 fruitbear 都指向同样的对象
fruit == fruitbear // return true
fruit === fruitbear // return true
- 本文链接:https://archer-lan.github.io/2023/11/20/JavaScript-%E4%BD%BF%E7%94%A8%E5%AF%B9%E8%B1%A1/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。