2010-12-29 8 views
1

mootools 1.2.5 doc: 設定、取得、または繰り返し時にプロトタイプを考慮しないカスタムオブジェクト({})実装。 JavaScriptではObject.prototypeを使用できないので便利です。代わりに、我々はHash.prototypeを使うことができます!mootoolsのハッシュを理解していません

しかし、私はそれを理解していません。私にハッシュの恩恵をどのように与えることができるかを示すいくつかの例を教えてください。

答えて

1

まず、Hashは、MooTools 1.3でObjectを推奨しています。

MooTools Objectは、非常に有用な方法をObjectに追加します。 prototypesに関する情報は、高度な使用に関連していますが、MooTools Objectを使用すると、ほとんどの場合、それを心配する必要はありません。

ここで有用な方法のMooToolsはの一部であるが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} 

(上記実施例および多くMooTools docsから)MooToolsのはハッシュを非推奨1.3からのものである例を提供してきた@bowsersenior

0

Object型を拡張することに賛成ですが、1.2.5ドキュメントについて話しているので、とにかく返信します。

1.2xのHashについて最も有用なことは、のプロトタイプ化されたオブジェクトのような構造を作成できることでした。

私は戻って同様の例を挙げ、件名にしばらく答え:Is there an jQuery equivalent of MooTools Hash?

を、それが互換モードO/W 1.3に来るとき、あなたはまだ代わりにObject.implement()を経由して、カスタムオブジェクトのメソッドを定義することができますが、それはそのthisで少し違うですオブジェクトではなく、常にObject.yourCustomMethod(yourobj, callbackFunction)への呼び出しが必要です。

0

実装方法がObject.prototypeであるため、ハッシュが存在したのは、アプリケーションが破損する可能性があるためです。

ハッシュには、例えば、Hash.prototypeを使用することが可能になった:

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

あなたが実際にHash.prototypeにメソッドを追加している、あなた自身のメソッドを追加するHash.implementを使用することができます。

Object.keysのような多くのObject。*関数を持つ新しいECMAScript 5仕様では、MooTools 1.3ではハッシュの代わりにこれらの関数を使用するようになったためです。

var obj = {my: 'nice', literal: 'object'} 
Object.values(Object.map(Object.filter(obj, someFunction), function(value){ 
    return value + ' sfsdf '; 
})); 

たぶん、もう少し詳細なこの例では、しかし、ES5に沿って、より多くの。 Hashが本当に好きな人は、MooTools More 1.3でこれを使うことができます。

ので、あなたは上記の正確オブジェクトの例のようにハッシュを使用することができます注:

var values = Hash.getValues({my: 'nice', literal: 'object'}); 
関連する問題