javascript代码实例教程-JavaScript原型链继承中属性查找过程、遍历对象属性

发布时间:2018-12-31 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaScript原型链继承中属性查找过程、遍历对象属性脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

在面向对象的开发工作中,经常会遇到检查对象属性和遍历对象属性的情况。 JavaScript 不包含如 java、C 等语言的传统类继承模型,而是使用 PRototyPE 原型模型。

JavaScript 原型链继承中属性查找过程

当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止。

到查找到达原型链的顶部 - 也就是Object.prototype- 但是仍然没有找到指定的属性,就会返回undefined。

使用for in循环可以遍历对象所有的属性,包括该对象在原型链中的属性,如:

VAR a = {
a:1,
b:2
};

var b = Object.create(a);

b.c = 3;

var c = Object.create(b);

c.d = 4;

for(var key in c){
console.LOG(c[key])
}

//会在控制台中依次打印出4 3 1 2
 

注意在控制台中打印的顺序是4 3 1 2,而不是1 2 3 4,这就解释了原型链继承时查找属性的过程是先查找自身属性,当自身属性不存在时,会在原型链中逐级查找。

有时候我们并不想要这样的结果,我们只想要获取对象自身的属性(不包括对象原型链上的属性),况且每次遍历都要查找对象的原型链,这样会造成性能负担。

hasOwnProperty 函数

hasOwnProperty函数可以用来检查对象自身是否含有某个属性,返回值是布尔值,当属性不存在时不会向上查找对象原型链。

用个例子来看看hasOwnProperty和for in的区别:

if(var "a" in c){
console.log(c["a"])//属性 a 是原型链上的属性, 输出 1
}

if(c.hasOwnProperty("a")){
console.log(c["a"])//属性 a 不是自身属性,不会执行这一步
}

getOwnPropertynames 函数

getOwnPropertyNames函数可以获取对象所有的自身属性,返回值是由对象自身属性名称组成的数组,同样不会向上查找对象原型链。

如:

console.log(Object.getOwnPropertyNames(c))//输出 ["d"]

getOwnPropertyNames函数遍历所有对象所有自身属性,例:

(fucntion(){
var propertys = Object.getOwnPropertyNames(c);
var len = propertys.length;

for(var i = 0; i < len; i++){
var key = propertys[i];
console.log(c[key])//输出 4
}
})();

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JavaScript原型链继承中属性查找过程、遍历对象属性全部内容,希望文章能够帮你解决javascript代码实例教程-JavaScript原型链继承中属性查找过程、遍历对象属性所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。