Na przykład Array
typ danych ma funkcję o nazwie pop()
, co przypuszczam jest dodawany za pomocą:Dlaczego natywne właściwości typów danych nie są wyświetlane w ich odpowiednich prototypach?
Array.prototype.pop = function(){ /* ... */ };
Ale o ile wiem, to jedyny sposób, aby nie przeliczalny jest zrobić coś takiego to:
Object.defineProperty(Array.prototype, "pop", { enumerable: false });
Który nie jest obsługiwany przez wszystkie przeglądarki.
Array.prototype.doSomething= function(){ };
var arr = [];
console.log(arr); // [doSomething: function]
Więc dlaczego doSomething
pokazać się tutaj, natomiast pop()
nie? Czy oboje nie zostali dodani do prototypu?
Tablice są rejestrowane przy użyciu literałów tablicowych: '[elem, elem]'. Jak byś się tu zmieściły właściwości niestandardowe? '{0: elem, 1: elem, length: 2, pop: ...}'? –
@ alex23 W tym przykładzie narzędzia dla programistów chrome. Ale zwykle firebug. Wydaje mi się, że również tam się pojawia. – Johan
@RobW Cóż, jeśli spojrzeć tutaj: http: // jsfiddle.net/6BAJx/1/w Chrome otrzymasz '[1, 2, 3, doSomething: function]'. Moje pytanie brzmiało: dlaczego moje własne właściwości "pasują", gdy są natywne, są niewidoczne. – Johan