2010-12-29 19 views
1

mootools 1.2.5 doc sagt: Eine benutzerdefinierte Objekt ({}) Implementierung, die nicht für Prototypen beim Festlegen, Holen oder Iterieren berücksichtigt. Nützlich, weil wir in JavaScript nicht Object.prototype verwenden können. Stattdessen können wir Hash.prototype verwenden!Ich verstehe nicht mootools hash

Aber ich verstehe es nicht, bitte geben Sie mir ein Beispiel, um zu zeigen, wie wir von Hash profitieren können.

Antwort

1

Zuerst wurde Hash in MooTools 1.3 zugunsten Object veraltet.

MooTools Object fügt einige sehr hilfreiche Methoden zu Object hinzu. Die Informationen über prototypes sind für die erweiterte Verwendung relevant, aber Sie müssen sich in den meisten Fällen keine Sorgen machen, wenn Sie MooTools Object verwenden.

Hier sind einige der nützlichen Methoden MooTools fügt Object:

// each 
// alerts 'The first day of the week is Sunday', 
// 'The second day of the week is Monday', etc.: 
Object.each(
    {first: 'Sunday', second: 'Monday', third: 'Tuesday'}, 
    function(value, key){ 
    alert('The ' + key + ' day of the week is ' + value); 
}); 

// map 
var myObject = {a: 1, b: 2, c: 3}; 
var timesTwo = Object.map(timesTwo, function(value, key){ 
    return value * 2; 
}); // timesTwo now holds an object containing: {a: 2, b: 4, c: 6}; 

// filter 
var myObject = {a: 10, b: 20, c: 30}; 
var biggerThanTwenty = Object.filter(myObject, function(value, key){ 
    return value > 20; 
}); // biggerThanTwenty now holds an object containing: {c: 30} 

(Beispiele oben und viele mehr von MooTools docs)

0

@bowsersenior Beispiele zur Verfügung gestellt hat, die von 1.3 sind, wo mootools Hash veraltet in Gunst des Erweiterns des Objekttyps, aber da Sie von den Dokumenten 1.2.5 sprechen, werde ich trotzdem antworten.

Die nützlichste Sache über Hash in 1.2.x war die Möglichkeit, objektartige Strukturen zu erzeugen, die Prototyp sein können.

antwortete ich eine Weile zurück auf das Thema ähnliche Beispiele geben: Is there an jQuery equivalent of MooTools Hash?

Wenn es um 1,3 kommt w/o-Kompatibilitätsmodus, können Sie benutzerdefinierte Objektmethoden über Object.implement() stattdessen definieren, aber es ist etwas anders, dass this ist nicht das Objekt und erfordert immer einen Anruf an die Object.yourCustomMethod(yourobj, callbackFunction).

0

Der Grund, warum Hash existiert, ist, weil die Implementierungsmethode Object.prototype ist sehr, sehr schlechte Praxis, weil es Ihre Anwendung bricht.

Hash es möglich gemacht, Hash.prototype zu verwenden, zum Beispiel:

new Hash({my: 'nice', literal: 'object'}).filter(someFunction).map(function(value){ 
    return value + ' sfsdf '; 
}).getValues(); 

Sie Hash.implement nutzen könnten Methoden der eigenen hinzuzufügen, die Methoden tatsächlich fügt Hash.prototype.

Da mit der neuen ECMAScript 5-Spezifikation, die viele Object. * - Funktionen wie Object.keys enthält, macht MooTools 1.3 jetzt diese Funktionen anstelle von Hash.

Vielleicht ein bisschen mehr in diesem Beispiel, aber mehr im Einklang mit ES5. Wenn Sie Hash wirklich mögen, könnten Sie sie immer noch in MooTools More 1.3 verwenden.

Beachten Sie, dass Hash genau wie das Objekt obigen Beispiel verwenden können, so:

var values = Hash.getValues({my: 'nice', literal: 'object'});