一、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
js使用in和hasOwnProperty獲取對象屬性的區別
in判斷的是對象的全部屬性,包括對象實例及其原型的屬性;
而hasOwnProperty則是判斷對象實例的是否具備某個屬性。post
示例代碼:url
<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。spa
ps: 本文轉自:https://www.cnblogs.com/jiangxiaobo/p/6243993.html.net