function Person() {
return Object.create(Person.prototype, {
first: { value: '' }
last: { value: '' }
});
}
You could even chose to make those non-enumerable or lock them with values.
~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
Samer Ziadeh wrote:
> So how would this translate to the update method without the new keyword.
>
> function Person() {
> this.first = '';
> this.last = '';
> }
>
> var boy = new Person();
> var girl = new Person();
>
>
> On Thu, Aug 13, 2009 at 21:48, Daniel Friesen
> <[email protected] <mailto:[email protected]>> wrote:
>
>
> To create an object in ES3, yes. (ES3; ECMAScript 3; Current
> JavaScript)
> ES5 adds a new method which follow the proper prototypal method (ES5;
> ECMAScript 5; The next version, ES4 was discarded)
>
> Object.create(proto, {...});
> The first argument is a prototype to give it:
> Object.create(Foo.prototype); is roughly the same as,
> in mozilla js:
> ({ __proto__: Foo.prototpe })
> in normal js
> function F() {}
> F.prototype = Foo.prototype;
> new F;
>
> Just so you know the {...} is a object listing keys to add. Each
> key has
> an object with data like value: (the value), or get: (a getter) and/or
> set: (a setter), as well as the attributes enumerable (part of for-in
> loops), writable (you can set it), and configurable (it can be removed
> using `delete o.prop`)
>
> There's a nice new idiom which involves using Object.create inside a
> function, using that function's prototype as the proto, setting
> properties, and returning that object. Essentially it does the same as
> using `new Fn` except it gives you more control, and works whether you
> use new or not.
>
> There's also an interesting new strawman that was recently brought
> into
> the harmony group, makes this possible:
> function Foo() {
> return {
> [parent: Foo.prototype],
>
> foo: "I'm a value",
> const _bar: "You can't set or delete me after this",
> };
> }
>
> ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
> [http://daniel.friesen.name]
>
> Samer Ziadeh wrote:
> > Isn't the 'new' a needed keyword?
> >
> > On Thu, Aug 13, 2009 at 08:04, Andrea Giammarchi
> > <[email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>> wrote:
> >
> > Python rules, and I mainly agree, except the day "new" will
> not be
> > necessary anymore we'll loose constructor duality, as functions,
> > and implicit injected "init" methods.
> >
> > Regards
> >
> >
> > On Tue, Aug 11, 2009 at 3:46 AM, Daniel Friesen
> > <[email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>> wrote:
> >
> >
> > The requirement of "new" to create new js objects is an
> > unnecessary
> > piece of the language, in fact the need to use it disappears
> > in ES5 as
> > it's no longer the only way to create new objects with a set
> > prototype.
> > There's nothing strange about having a $ function and
> creating
> > an object
> > from it, in fact it's closer to real prototype-based
> > programming than
> > the `new Class` you see inside of JavaScript.
> >
> > ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
> > [http://daniel.friesen.name]
> >
> >
> >
> >
> >
> >
> > --
> > Samer Ziadeh
> > www.samerziadeh.com <http://www.samerziadeh.com>
> <http://www.samerziadeh.com>
> >
> >
> > "Let It Be"
> >
> > >
>
>
>
>
>
> --
> Samer Ziadeh
> www.samerziadeh.com <http://www.samerziadeh.com>
>
>
> "Let It Be"
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery Development" 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/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---