Sto cercando un modo per sovrascrivere la proprietà .length di un oggetto in JavaScript.Come sovrascrivere Function.length per restituire la lunghezza di un array, in modalità rigorosa
Al momento ho un wrapper su parent.properties.objects serie
(genitore viene utilizzato per il codice per essere più leggibile nel contesto)
Questa è la struttura di base:
(variabile genitore è definita nel namespace ed inizializzata)
var parent = function() {
this.properties = {
objects: [];
};
};
involucro
(function() {
"use strict";
objects = function() {
Se non viene passato alcun argomento, assumere ottenere
if (arguments.length === 0) {
var _objects = parent.properties.objects;
return _objects;
modificare o oggetti filtro
} else if (arguments.length > 0) {
...
}
};
questo crea un Object.prototype variabile (non [prototype]) e aggiunge la lunghezza metodo ()
objects.prototype.length = function() {
var length = parent.properties.objects.length;
return length;
}
errore
012.objects.prototype.__proto__.length = function() {
var length = parent.properties.objects.length;
return length;
}
parent.objects = objects;
})();
Puoi essere più specifico sul tipo di errore che stai ottenendo? – guypursey
L'ho hackerato con objects.Length() (JavaScript fa distinzione tra maiuscole e minuscole). Lo sto facendo per scrivere una comoda API, e non per avere una funzione per ogni operazione get/set della proprietà. ma una singola funzione per ogni proprietà. Sarebbe stato bello chiamare objects.length(), ma objects.Length() farà, opposto a objects(). Length(). L'errore era una specie di __proto__ non trovato blah blah blah. Dovrà attendere ECMA 6. –
Qual è l'ultima riga 'parent.object = object; 'cosa dovrebbe fare? 'parent' è una funzione, e non vedo una variabile' object' dichiarata ovunque – Bergi