Javascript中for in語句可以用于循環(huán)遍歷對象屬性,它的語法是:for (variablename in object),其中variablename是一個(gè)變量名,它代表每個(gè)屬性名的名字;object是要枚舉其屬性名的對象。
例如,我們有一個(gè)簡單的對象person,它包含name、age和gender三個(gè)屬性:
<script>
var person = {
name: "Tom",
age: 20,
gender: "male"
};
for (var propName in person) {
console.log(propName + ": " + person[propName]);
}
</script>
上面的代碼會(huì)依次輸出person對象的屬性名和對應(yīng)的屬性值:name: Tom、age: 20和gender: male。
需要注意的是,for in語句的遍歷順序是不確定的,可能會(huì)按照屬性名的添加順序,也可能會(huì)是按照屬性名的ASCII碼值升序排列。
如果需要按照特定順序遍歷對象屬性,可以使用Object.keys()方法將屬性名轉(zhuǎn)為數(shù)組,再使用數(shù)組的sort()方法排序,最后使用for循環(huán)遍歷數(shù)組,再依次輸出屬性值。<script>
var person = {
name: "Tom",
age: 20,
gender: "male"
};
var propertyList = Object.keys(person).sort();
for (var i = 0; i < propertyList.length; i++) {
console.log(propertyList[i] + ": " + person[propertyList[i]]);
}
</script>
上面的代碼會(huì)按照屬性名的ASCII碼值升序排列依次輸出person對象的屬性名和對應(yīng)的屬性值:age: 20、gender: male和name: Tom。
需要特別注意的是,for in語句不僅會(huì)遍歷對象自身的屬性,還會(huì)遍歷對象原型鏈上的屬性。如果不希望遍歷原型鏈上的屬性,應(yīng)該使用hasOwnProperty()方法進(jìn)行判斷。
例如,我們有一個(gè)自定義的Person類,它繼承自O(shè)bject類,并添加了一個(gè)自己的sayHello()方法:<script>
function Person(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
var person = new Person("Tom", 20, "male");
for (var propName in person) {
if (person.hasOwnProperty(propName)) {
console.log(propName + ": " + person[propName]);
}
}
</script>
上面的代碼只會(huì)輸出person對象自身的屬性名和對應(yīng)的屬性值:age: 20、gender: male和name: Tom,而不會(huì)輸出sayHello()方法。上一篇mac 卸載php
下一篇mac 地址 php