2013-10-06 20 views
5

Uwielbiam metodę Object.getOwnPropertyNames. Wydaje się, że jest to przydatne narzędzie do nauki o obiektach w powłoce JS.Brakujące właściwości Javascript "Object.getOwnPropertyNames"?

To, co doprowadza mnie do szału, polega na tym, że niektóre funkcje getOwnPropertyNames wydają się być niewystarczające (uwaga: w moich testach używam wersji ECMA 5 - Google Chrome w wersji 28.0.1500.95).

Oto przykład:

> var x= [] 
undefined 
> x.constructor 
function Array() { [native code] } 
> Object.getOwnPropertyNames(x) 
["length"] 

jednak wyraźnie, x ma wiele właściwości! (Np https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype)

> x.push 
function push() { [native code] } 
> x.pop 
function pop() { [native code] } 

Czy ktoś może pomóc wyjaśnić, co tu się dzieje? Dzięki! : D

Edycja: Okay! Widzę, że getOwnPropertyNames pobiera tylko nazwy właściwości obiektu pod ręką. Czy istnieje prosty sposób na uzyskanie odziedziczonych właściwości? A może jedynym sposobem jest przechodzenie przez object.constructor.prototype .__ proto__?

+0

getOWNpropertyNames –

+0

Pytanie edytowane staje się możliwe duplikat [Jak notować właściwości obiektu JavaScript] (http://stackoverflow.com/questions/208016/how-to-list -właściwość-obiektu-javascript-obiektu) – Djizeus

Odpowiedz

4

Według https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto

Obiekt __proto__ jest przestarzała i nie powinny być stosowane. Object.getPrototypeOf należy użyć zamiast pobierającego __proto__, aby określić [[Prototyp]] obiektu.

> x = []; 
[] 
> Object.getOwnPropertyNames(Object.getPrototypeOf(x)); 
["length", "constructor", "toString", "toLocaleString", "join", "pop", "push", "concat", 
"reverse", "shift", "unshift", "slice", "splice", "sort", "filter", "forEach", "some", 
"every", "map", "indexOf", "lastIndexOf", "reduce", "reduceRight"] 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf

Powiązane problemy