2009 08 18Bracket Mess
JSCocoa will soon get an Objective-J like syntax, mixing Javascript syntax and Objective-C messaging :
// Allocate a new object var a = [MyObject new]
Mixing both styles looks buggy but is actually correct :
// Make a new array containing a new object var array = [[MyObject new]] // Make a new array containing an alloc'ed object, get that object, call init on it, save it in its own array var obj = [[[MyObject alloc]][0] init] // (This gets translated as var obj = [MyObject.alloc][0].init
After your object is initialized, you can use Javascript-like access for hashes and dictionaries :
// Allocate a new object as the only element of an array immediate, init it, // then gets it 'keys' properties, then the 'name' property of 'keys' var obj = [[[[MyObject alloc]][0] init] keys]['name']
JSCocoa will translate Javascript array and hash immediates to NSArray
and NSDictionary
instances, so they can also be used as parameter values ...
var o = [[MyObject alloc] initWithOptions: { orientation : 'vertical', count : 5 }]
or to retrieve an instance to call on to :
// Call a method from an object stored in a js array var array = [MyObject new, MyObject new] [array[0] doSomething] // Call a method from an object stored in a js hash var hash = { 'value' : [MyObject new] } [hash['value'] doSomethingElse]I'm only using these as stress test, no code needs that many brackets !
Patrick Geiller
2009 09 28
Yes, I'm following the Objective-J and JSTalk route.
Extending Javascript this way seems like a good idea.
This looks remarkably like the Objective-J code used for the Cappuccino framework. Are you doing something similar?