js对象的hasOwnProperty为什么比数组的indexof方法在性能上高的多_百度...

发布网友

我来回答

2个回答

懂视网

JavaScript isPrototypeOf和hasOwnProperty的使用技巧,需要的朋友的朋友可以参考下。

1、isPrototypeOf
isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false。
格式如下:
object1.isPrototypeOf(object2);
object1是一个对象的实例;
object2是另一个将要检查其原型链的对象。
原型链可以用来在同一个对象类型的不同实例之间共享功能。
如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,isPrototypeOf 方法将返回 false。
使用举例如下:

var re = /^s*/;
// 这里定义一个正则表达式对象
// 这里检查RegExp是不是re的原形链对象,返回true
var bIsptt = RegExp.prototype.isPrototypeOf(re);

2、hasOwnProperty hasOwnProperty判断一个对象是否有名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
如果该属性或者方法是该 对象自身定义的而不是器原型链中定义的 则返回true;否则返回false;
格式如下:
object.hasOwnProperty(proName);
判断proName的名称是不是object对象的一个属性或对象。使用举例如下:

// 得到false, 因为不能检测原型链中的属性
var bStr = "Test String".hasOwnProperty("split");
// String对象的原型上本来就有这个属性,自然返回true
var bStr1 = String.prototype.hasOwnProperty("split");
// 返回true,因为不是检测原型中的属性
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest");

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景(实用技巧)

全面分析JavaScript面向对象概念中的Object类型与作用域(附有示例)

重点讲解在JavaScript中的__proto__属性(图文教程)

热心网友

indexOf:是数组的元素存在性检查方法。需要遍历所有元素来检查,此方法的时间复杂度是O(n)。
hasOwnProperty:是对象的属性(名称)存在性检查方法。对象的属性可以基于Hash表实现,因此对属性进行访问的时间复杂度可以达到O(1)。
所以很明显,后者可以远快于前者。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com