私は以下に相当するものを書き込もうとしています:
$( "#draggable" ).draggable({ axis: "y" });
琥珀色のsmalltalkで。
私の推測は:'#draggable' asJQuery draggable: {'axis' -> 'y'}
しかしそれはそうではありません。
私は以下に相当するものを書き込もうとしています:
$( "#draggable" ).draggable({ axis: "y" });
琥珀色のsmalltalkで。
私の推測は:'#draggable' asJQuery draggable: {'axis' -> 'y'}
しかしそれはそうではありません。
バニラ0.9.1で作業していませんが、少なくとも過去2か月前にマスターで作業しているのは次のとおりです。
'#draggable' asJQuery draggable: #{'axis' -> 'y'}
そして、これが推奨される方法です。
PS:#{ 'key' -> val. 'key2' -> val }
は、のインライン作成の構文でありHashedCollection
、(前述の2か月前の修正から)実装されているため、パブリック(別名列挙可能)プロパティのみがHashedCollectionキーになります。修正前は、すべてのメソッドも列挙可能であったため、JavaScriptオブジェクトの代わりに自然に使用することはできませんでした。
ハービーの優れた答えは、それを行うための推奨される方法を示しています。どうやら、辞書リテラルのサポートがあります(以下の彼のコメントを参照してください)。それを知りませんでした:-)
歴史的な理由から、または最新のマスターバージョンを使用していないユーザーの場合、これは別の方法です。
options := <{}>.
options at: #axis put: 'y'.
'#draggable' asJQuery draggable: options.
最初の行は空のJavaScriptオブジェクトを作成します(実際にはJSObjectProxy
)。
2行目は、文字列「y」をスロット「axis」に配置します。次と同じ効果があります。
options.axis = "y"; // JavaScript
最後に、それが呼び出され、パラメーターとして渡されます。
現代のSmalltalk(Pharo / Squeak / Amber)では、中かっこはJavaScriptで使用されるオブジェクトリテラルとしてではなく、配列リテラルに使用されるため、実行していたことは機能しませんでした。
ワークスペースでこれを評価(印刷)する場合:
{ #elelemt1. #element2. #element3 }.
あなたが得る:
a Array (#elelemt1 #element2 #element3)
その結果、 JavaScriptオブジェクトのように見えるものがある場合、実際には文字通り、それは関連付けの配列です。説明のために、このスニペットと、右側のprint-itの結果を示します。
arrayLookingLikeObject := { #key1 -> #value1. #key2 -> #value2. #key3 -> #value3}.
arrayLookingLikeObject class. "==> Array"
arrayLookingLikeObject first class. "==> Association"
arrayLookingLikeObject "==> a Array (a Association a Association a Association)"
私はそれについてここに書いた:
http://smalltalkreloaded.blogspot.co.at/2012/04/javascript-objects-back-and-forth.html