在看《高程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