-
Notifications
You must be signed in to change notification settings - Fork 123
From smalltalk to javascript and back
NicolasPetton edited this page Nov 25, 2011
·
21 revisions
Jtalk maps one to one with the JavaScript equivalent:
- String ⇔ String
- Number ⇔ Number
- BlockClosure ⇔ function
- Dictionary ⇔ Object
- Error ⇔ Error
- etc.
##Smalltalk ⇒ JavaScript Amber makes it easy to send messages to Smalltalk objects from JavaScript:
- Unary messages begin with an underscore:
yourselfbecomes_yourself() - Binary messages are prefixed with 2 underscores:
3@4becomes(3).__at(4) - Keyword message follow the same rules as unary messages but with single underscores and a final underscore:
aDictionary at: 3 put: 4becomesaDictionary._at_put_(3, 4)
Smalltalk classes are added to the global smalltalk JavaScript object: Object new becomes smalltalk.Object._new();.
##JavaScript ⇒ Smalltalk
You can also access JavaScript objects directly from Amber and access their properties or call functions:
-
someUser.namebecomessomeUser name -
someUser name = "John"becomessomeUser name: 'John'console.log('hello world')becomesconsole log: 'hello world' -
window.jQuery('foo').css('background', 'red')becomes(window jQuery: 'foo') css: 'background' color: 'red'
For keyword selectors, only the first keyword matters, all the other keywords will be ignored. That means our previous example could have been: (window jQuery: 'foo') css: 'background' set: 'red'