JavaScript:isPrototypeOf和hasOwnProperty

本文介绍了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");

 

转载于:https://www.cnblogs.com/siceblue/archive/2010/03/03/1677345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值