Javascript expando objects

Cosa sono gli oggetti expando in javascript?

Per quale scopo abbiamo bisogno di questo? Qualsiasi esempio completo sarà apprezzato

Ho trovato 1 articolo qui Javascript: Il figliastro dalla testa rossa dello sviluppo web

Bene, in javascript, qualsiasi object è un object expando. Ciò che significa è, come l’articolo copre, che ogni volta che si tenta di accedere a una proprietà 1 verrà automaticamente creato.

var myObj = {}; // completely empty object myObj.myProp = 'value'; 

Nel momento in cui assegni a myProp un valore, la proprietà myProp viene creata dynamicmente, anche se prima non esisteva. In molti altri linguaggi, come C #, questo non è normalmente ansible (in realtà C # ha appena abilitato anche il supporto per oggetti expando, ma questo è oltre il punto). Per accedere a una proprietà in una class normale in C #, è necessario specificare nella class che abbia effettivamente questa proprietà.

1 Non proprio corretto. Vedi il commento di npup sotto per chiarimenti.

Tutto tranne i tipi primitivi (stringa, numero, booleano) sono oggetti e supporto Chiave: struttura dei valori. le proprietà (chiavi) sono accessibili e impostate usando la notazione a punti e le parentesi quadre.

 var myObj = {}; myObj.myProp1 = 'value1'; //works, an expando property myObj[myProp2] = 'value2'; // doesn't work, myProp2 is an undefined name. myObj['myProp2'] = 'value2'; // works , an expando property myObj[2010]= 'value'; //note the key is number, still works, an expando property?? myObj.2010 = 'value'; // FAILS. to use dot notation, key must be a string 

Un articolo scritto nel 2007 che utilizza document.all (come unico modo per accedere agli elementi)? Questa è una grande bandiera rossa.

Si tratta semplicemente di vestire “È ansible aggiungere proprietà a un object” con alcune parole d’ordine.

Dobbiamo essere in grado di farlo perché altrimenti non saremmo in grado di memorizzare dati, e questo renderebbe JavaScript un linguaggio piuttosto inutile.

(Tutto è un array? No non lo è. E itera su un object senza un wrapper hasOwnProperty .Questo non è sicuro. Basta stare lontano dall’articolo, è peggio che inutile)

JavaScript trasforma elementi con ID di nomi specifici in espanso dell’object DOM restituito. È spiegato qui .