At my first sight, I were amazed at the prototypal concept in "Good Part".
But when I tried to write little(very little) code, I'm confused.
Deeper I think about the skill, it looks more similar to classical...
My feeling is caused by a lack of understanding?
Are there some excellent open source project I should read to understand
javascript?
(Hmm... I know it's impossible to not open javascript's source code :)

On Thu, Dec 23, 2010 at 4:37 PM, Yu-Hsuan Lai <rainco...@gmail.com> wrote:

> In fact, even though I just want some public variants, I still have the
> same problem.
> var obj = {a:1,b:2,c:3 ... some methods...};
> obj2 = Object.create(obj);
> obj2.a is referred to obj.a, right? If I want another instance, I have to
> write obj2.a = 1;
> But if the object is very "big"? Write a function to assign all variants?
> Is it "constructor"?
> Once I implement these all, my prototypal OO still is different from
> classical OO?
>
> On Thu, Dec 23, 2010 at 3:14 PM, אריה גלזר <arieh.gla...@gmail.com> wrote:
>
>> This is exacatly the point - you create the methods and the variable
>> together, so either you get a copy of all of them, or you get a new
>> instance.
>> But if you want a 'private' variable for each instance, the only way you
>> are going to achieve this (I think) is by creating a separate closure for
>> each object creation. So you can either do the above second solution, or you
>> can do
>> var obj = {
>>         getA : function getA() {
>>             return this.a;
>>         },
>>         setA : function setA(b) {
>>             a = this.b;
>>         }
>>     };
>>
>> function F(){ this.a = 'a';}
>> for (i =0; i<10;i++) x.push((function(){ F.prototype = obj; return new
>> F();})();
>>
>> And you will still be exposing a in the end. But the point is, this is
>> much less readable and performance-wise I don't think it really matters, so
>> your second pattern is good enough IMO.
>>
>> note - this list beeing so heavy on js wizards, I'm always a little afraid
>> of posting comments here...
>>
>>
>> On Thu, Dec 23, 2010 at 8:23 AM, Yu-Hsuan Lai <rainco...@gmail.com>wrote:
>>
>>> I'm trying use prototypal inheritance instead of classical one. But I'm
>>> still confused.
>>> I can't complete very very very small tasks, like this one:
>>> Create 10 copies of a object(with a private variant and public functions
>>> to access it) in an array.
>>>
>>> I have two way to approach it, first is to use Object#create:
>>> var x=[];
>>> x[0]=(function () {
>>>     var a=10;
>>>     return {
>>>         getA : function getA() {
>>>             return a;
>>>         },
>>>         setA : function setA(b) {
>>>             a = b;
>>>         }
>>>     };
>>> })();
>>> for(var i=1; i<10; i++)
>>>     x[i] = Object.create(x[0]);
>>>
>>> But all 10 objects' "a"s refer to a single integer. Tragedy.
>>> My second way is call a function which return a object 10 times:
>>> function createX() {
>>>     var a=10;
>>>     return {
>>>         getA : function getA() {
>>>             return a;
>>>         },
>>>         setA : function setA(b) {
>>>             a = b;
>>>         }
>>>     };
>>> }
>>> var x=[];
>>> for(var i=0; i<10; i++)
>>>     x[i] = createX();
>>>
>>> It works. But every x has its own "getA" and "setA" instance. In contrast
>>> to the former, it costs more memory.
>>> I know it maybe doesn't matter. But knowing prototypal OO can use only
>>> one instance, creating 10 let me regard me as a stupid.
>>>
>>> Except the two methods, the only one method I can figure out is...
>>> classical OO.
>>> Is it avoidable?
>>>
>>>
>>>
>>> --
>>> Lai, Yu-Hsuan
>>>
>>> --
>>> To view archived discussions from the original JSMentors Mailman list:
>>> http://www.mail-archive.com/jsmentors@jsmentors.com/
>>>
>>> To search via a non-Google archive, visit here:
>>> http://www.mail-archive.com/jsmentors@googlegroups.com/
>>>
>>> To unsubscribe from this group, send email to
>>> jsmentors+unsubscr...@googlegroups.com<jsmentors%2bunsubscr...@googlegroups.com>
>>>
>>
>>
>>
>> --
>> Arieh Glazer
>> אריה גלזר
>> 052-5348-561
>> http://www.arieh.co.il
>> http://www.link-wd.co.il
>>
>>  --
>> To view archived discussions from the original JSMentors Mailman list:
>> http://www.mail-archive.com/jsmentors@jsmentors.com/
>>
>> To search via a non-Google archive, visit here:
>> http://www.mail-archive.com/jsmentors@googlegroups.com/
>>
>> To unsubscribe from this group, send email to
>> jsmentors+unsubscr...@googlegroups.com<jsmentors%2bunsubscr...@googlegroups.com>
>>
>
>
>
> --
> Lai, Yu-Hsuan
>



-- 
Lai, Yu-Hsuan

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/jsmentors@jsmentors.com/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/jsmentors@googlegroups.com/

To unsubscribe from this group, send email to
jsmentors+unsubscr...@googlegroups.com

Reply via email to