原型相關的方法isPrototypeOf、Object.getPrototypeOf、hasOwnProperty、Object.getOwnPropertyName、Object.keys


  在看《高程3》第六章的《面向對象的程序設計》的原型那一節時,有一下5個函數,功能較為接近,但是又都很基礎,很重要

  所以在此,加以說明,以便日后復習

  function Person(){this.age = 100}   var person1 = new Person;

 

①isPrototypeOf()

  Person.prototype.isPrototypeOf(person1);  //true

 

②Object.getPrototypeOf()

  alert(Object.getPrototypeOf(person1) == Person.prototype)  //true

 

③hasOwnProperty()  //判斷屬性是否是存在於自己的實例中,如果是:返回true,如果僅僅存在自己的原型總,則返回false

  person1.hasOwnProperty("age");  //fales  因為age是原型的屬性,而不是自己實例的屬性

 

④Object.keys()  //如果你想要獲得所有實例屬性,並僅需可枚舉的,可以使用這個方法  其實和for in遍歷出來的是一樣的

  var keys = Object.keys(Person.prototype);   alert(keys);  //"age"


⑤Object.getOwnPropertyName()  //如果你想要獲得所有實例屬性,無論他是否可枚舉,可以使用這個方法

  var keys = Object.getOwnPropertyNames(Person.prototype);   alert(keys);  //"constructor, age"

 

所有開發者定義的屬性,均是可枚舉的;

不可枚舉的屬性有: toLocaleString()、toString()、valueOf()、hasOwnProperty()、propertyIsEnumerable()  es5將constructor和prototype的 [ [ Enumerable ] ] = false ,即可枚舉屬性設置為了 false

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM