JS对象的属性JS对象的介绍
JavaScript 的设计是一个简单的基于对象的范式。一个对象就是一系列属性的集合,一个属性包含一个名和一个值。一个属性的值可以是函数,这种情况下属性也被称为方法。除了浏览器里面预定义的那些对象之外,你也可以定义你自己的对象。
对象和属性一个 javascript 对象有很多属性。一个对象的属性可以被解释成一个附加到对象上的变量。对象的属性和普通的 javascript 变量基本没什么区别,仅仅是属性属于某个对象。属性定义了对象的特征。
和其他 javascript 变量一样,对象的名字(可以是普通的变量)和属性的名字都是大小写敏感的。
你可以在定义一个属性的时候就给它赋值。
var myCar = new Object();myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
对象中未赋值的属性的值为undefined(而不是null)。
myCar.noProperty; // undefined2.方括号访问JavaScript 对象的属性也可以通过方括号访问或者设置。对象有时也被叫作关联数组, 因为每个属性都有一个用于访问它的字符串值。
myCar["make"] = "Ford";myCar["model"] = "Mustang";
myCar["year"] = 1969;
一个对象的属性名可以是任何有效的 JavaScript 字符串,或者可以被转换为字符串的任何类型,包括空字符串。然而,一个属性的名称如果不是一个有效的 JavaScript 标识符(例如,一个由空格或连字符,或者以数字开头的属性名),就只能通过方括号标记访问。
// 同时创建四个变量,用逗号分隔var myObj = new Object(),
str = "myString",
rand = Math.random(),
obj = new Object();
myObj.type = "Dot syntax";
myObj["date created"] = "String with space";
myObj[str] = "String value";//这里JS会调用.toString来转化成字符串
myObj[rand] = "Random Number";
myObj[obj] = "Object";
myObj[""] = "Even an empty string";
console.log(myObj);
请注意,方括号中的所有键都将转换为字符串类型,因为JavaScript中的对象只能使用String类型作为键类型。 例如,在上面的代码中,当将键obj添加到myObj时,JavaScript将调用obj.toString()方法,并将此结果字符串用作新键。
你也可以通过存储在变量中的字符串来访问属性
var propertyName = "make";myCar[propertyName] = "Ford";
propertyName = "model";
myCar[propertyName] = "Mustang";枚举所有属性
从 ECMAScript 5 开始,有三种原生的方法用于列出或枚举对象的属性:
for...in 循环该方法依次访问一个对象及其原型链中所有可枚举的属性。
你可以在 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;
}
因而,对于函数调用 showProps(myCar, "myCar") 将返回以下值:
myCar.make = FordmyCar.model = Mustang
myCar.year = 1969
Object.keys(o)该方法返回一个对象 o 自身包含(不包括原型中)的所有属性的名称的数组。
Object.getOwnPropertyNames(o)该方法返回一个数组,它包含了对象 o 所有拥有的属性(无论是否可枚举)的名称。