Hi,

> Are the methods on the class level, as if I had declared them with
> Database.prototype.methodName?

Well, at the prototype level, yes. ("class level" gets to be
ambiguous, since "class methods" in many languages are meant to be
ones that are on the *class*, not instances of it; e.g., like
Object.clone.) The functions are shared across all instances created
via `Database`, they're not duplicated as with the Crockford private
methods pattern. This is easily demonstrated:

* * * *
  var d1 = new Database();
  var d2 = new Database();
  display("Database.prototype.setName === d1.setName? " +
          (Database.prototype.setName === d1.setName));
  display("d1.setName === d2.setName? " +
          (d1.setName === d2.setName));
* * * *
http://jsbin.com/ataze

> If this is true, is it also true, if I clone such an object with
> Object.clone()?

If object `a` has properties referencing functions, and you clone it
to `b`, then `b` uses the *same* function instances that `a` uses; the
functions aren't duplicated:
* * * *
  var a = {
    func: function() {
      display("My name is " + this.name);
    },
    name: 'a'
  };

  var b = Object.clone(a);
  b.name = 'b';

  a.func();
  b.func();
  display("a.func === b.func? " + (a.func === b.func));
* * * *
http://jsbin.com/abeqe3

HTH,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

On Dec 15, 3:41 pm, "thomas.boer...@googlemail.com"
<thomas.boer...@googlemail.com> wrote:
> HI!
>
> When I create a class with Class.create() and add some methods like
> this:
>
> var Database = Class.create({
> initialize: function() {
>   this.name = "";},
>
> setName: function(name) {
>   this.name = name;
>
> },
> });
>
> Are the methods on the class level, as if I had declared them with
> Database.prototype.methodName?
>
> So they do not cost memory, if I use "new" to instantiate objects from
> this class, correct?
>
> If this is true, is it also true, if I clone such an object with
> Object.clone()?
>
> Thanks!
>
> Thomas

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to