Couple things (issues explained 1 by 1)...
First, in your code here you are accessing the add object as a static object
on the class, when in fact it is a prototyped instance member. Meaning you
first need to create an instance of your class to get at .add...
var my_test_instance = new my_test();
my_test_instance.add.txt();
However... you are also missing an "initialize" function, which is necessary
if you are using Class.create(). So you first have to rewrite your class
like this:
my_test.prototype = {
textarea: 1,
initialize: function() {},
add: {
txt: function() {
console.log(this.textarea);
}
}
}
Then... like the others have been saying, even with a bind on that txt()
function, the best you'd be doing is mapping "this" to the "add" object
that's been tacked on to the prototype. If you are interested in writing
this class in a manner similar to this, you must use a closure to wrap the
object returned. To do this, turn "add" into a function that returns an
object... (then .bind(this) on the methods of that object will work to map
"this" to your my_test instance), however you must call add as a function.
This pattern _can_ be helpful though under some more complicated scenarios.
For now, it may be close to what you were looking for.
my_test.prototype = {
textarea: 1,
initialize: function() {},
add: function () {
return {
txt: function() {
console.log(this.textarea);
}.bind(this)
}
}
};
var my_test_instance = new my_test();
my_test_instance.add().txt();
On 5/5/07, Christoph Roeder <[EMAIL PROTECTED]> wrote:
>
>
> Hello,
>
> I hope anybody can give me a hint why this dosn't work?
>
> Thanks in advance
>
> ~~~~~~~~~~~~~~~~
> var my_test = Class.create();
> my_test.prototype = {
> textarea: 1,
>
> add: {
> txt: function(){
> console.log(this.textarea);
> }
> }
> }
>
> my_test.add.txt();
>
>
> >
>
--
Ryan Gahl
Software Architect
WebWidgetry.com / MashupStudio.com
Future Home of the World's First Complete Web Platform
Inquire: 1-262-951-6727
Blog: http://www.someElement.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---