// 定义父类
function SuperType(name) {
this.name = name;
}
SuperType.prototype.type = "type is SuperType";
// 定义子类
function SubType(name, age) {
SuperType.call(this, name);
this.age = age;
}
SubType.prototype = new SuperType();
SubType.prototype.contructor = SubType;
let obj = new SubType('Top_Chenxi', '18');
Object.defineProperty(obj, 'height', {
'value': 180,
'enumable': false //不可遍历
});
// 1:遍历对象可枚举的所有自身的属性
// 1.1 使用Object.key()+for..of
let Traversal_1 = (obj) => {
for (let key of Object.keys(obj)) {
console.log(1, key, obj[key]);
}
};
Traversal_1(obj);
// name Top_Chenxi
// age 18
// 1.2 for..in + hasOwnProperty
let Traversal_2 = (obj) => {
for (let key in obj) {
if (obj.hasOwnProperty(key)) console.log(2, key, obj[key]);
}
}
Traversal_2(obj);
// name Top_Chenxi
// age 18
// 2:遍历对象所有的(包括可枚举和不可枚举的)自身的属性
// 2.1 Object.getOwnPropertyNames()使用for..of遍历
let Traversal_3 = (obj) => {
for (let key of Object.getOwnPropertyNames(obj)) {
console.log(3, key, obj[key]);
}
};
Traversal_3(obj);
// name Top_Chenxi
// age 18
// height 180
// 3:遍历对象可枚举的自身和继承的属性
// 3.1 使用for..in循环遍历
let Traversal_4 = (obj) => {
for (key in obj) {
console.log(4, key, obj[key]);
}
};
Traversal_4(obj);
// name Top_Chenxi
// age 18
// contructor ...
// type type is SuperType
// 4:遍历对象所有的自身和继承的属性
// 4.1 do..while循环
var Traversal_5 = (obj) => {
// do语句内容至少执行一次,当while判断语句为true,反复执行
do {
console.log(5, Object.getOwnPropertyNames(obj))
} while (obj = Object.getPrototypeOf(obj));
};
Traversal_5(obj);
[分析] 不一样的object遍历(Traversal)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...