一、isPrototypeOf
isPrototypeOf是用来判断指定对象object1是否存在于另外一个对象object2的原型链中,是则返回true,不然返回false。
格式以下:
object1.isPrototypeOf(object2);
object1是一个对象的实例;
object2是另外一个将要检查其原型链的对象。
原型链能够用来在同一个对象类型的不一样实例之间共享功能。
若是 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。
若是 object2 不是一个对象或者 object1 没有出如今 object2 中的原型链中,isPrototypeOf 方法将返回 false。 javascript
二、hasOwnProperty
hasOwnProperty判断一个对象是否有名称的属性或对象,此方法没法检查该对象的原型链中是否具备该属性,该属性必须是对象自己的一个成员。
若是该属性或者方法是该 对象自身定义的而不是器原型链中定义的 则返回true;不然返回false;
格式以下:
object.hasOwnProperty(proName);
判断proName的名称是否是object对象的一个属性或对象。html
本文转自:http://www.cnblogs.com/ppforever/p/3921481.htmljava
原创文章请随便转载。愿和你们分享,而且一块儿进步。-- 江 coderspa
in判断的是对象的全部属性,包括对象实例及其原型的属性;
而hasOwnProperty则是判断对象实例的是否具备某个属性。.net
示例代码:prototype
<script type="text/javascript"> function Person(){ } Person.prototype.name = "allen"; var person = new Person(); console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen" person.name = "justforse"; console.log(person.hasOwnProperty("name")); //true console.log("name" in person); //true console.log(person.name); //"justforuse" delete person.name; console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen" </script>
以上代码执行的时候,name属性要么是从实例中获取的,要么是来源于原型,因此使用in 来访问 name属性始终返回true;而hasOwnProperty()只在属性存在与对象实例中时才返回true,当删除了实例中的name属性后,就恢复了原型中name属性的链接,因此返回allen。code