That will work everywhere, as I mentionned the issue is more global, your case made me think about it, it's only the begining of a suggestion, whether it's nice or not in the representation can be fixed later, what I am questionning here is the abnormal/not optimized behavior of "this", still thinking about it, what I wrote below does not solve all cases
Le 06/03/2012 17:33, 程劭非 a écrit : > That will work in json but Object.GetBase is not so nice. > > Also I think GetBase(GetBase(GetBase(this))) looks a bit ugly. > > 在 2012年3月7日 上午12:22,Aymeric Vitte <[email protected] > <mailto:[email protected]>>写 道: > > Even if GetBase was existing I don't know if it would cover all > your needs but unless I missed something I don't get your last > example (where p is defined and where GetBase is supposed to be > called ?) > > Le 06/03/2012 16:33, 程劭非 a écrit : >> Sorry. >> I mean the following case: >> >> var x = { >> a:{ >> }, >> b:{ >> } >> } >> >> x.a.p = x.b.p = {}; >> >> So GetBase is not able to decide to return x.a or x.b. >> >> >> 在 2012年3月6日 下午11:08,Aymeric Vitte <[email protected] >> <mailto:[email protected]>>写 道: >> >>> Some object could have more than one ancestor. >> >> Yes, so ? It's not in contradiction with what I am saying >> >> Le 06/03/2012 14:58, 程劭非 a écrit : >>> I prefer "this" to be root object. Some object could have >>> more than one ancestor. >>> >>> 2012/3/6 Aymeric Vitte <[email protected] >>> <mailto:[email protected]>> >>> >>> Yes, assuming that GetBase is usable (8.9) : >>> >>> var obj = { >>> x:{ >>> a: GetBase(this) // obj >>> } >>> } >>> >>> But it is an internal function only, there are things >>> defined in specs to access properties of objects but >>> nothing the other way, because I believe the case never >>> happens today. >>> >>> The "this" proposal is not bad for me (and even good), >>> if I take Lasse Reichstein's objection, I would say : >>> >>> {"a" : this.b, //undefined >>> "b" : this.a } //undefined >>> >>> >>> Same as if you do : function f() {this.a = this.b; >>> this.b = this.a}; var g = new f();//g.a undefined //g.b >>> undefined >>> >>> It does not solve your issue but it makes me think to a >>> more global issue, the "lexical this" here >>> http://brendaneich.com/2011/01/harmony-of-my-dreams/ or >>> this post >>> >>> https://mail.mozilla.org/pipermail/es-discuss/2012-February/020749.html >>> (which apparently did not passionate) >>> >>> But this should not be applicable to functions only, >>> this could be generalized to objects, where "this" >>> unless explicitely bound to something should refer to >>> the object itself, and not the global object (moreover >>> that there are discussions about the future of the >>> global object) >>> >>> Then an Object.GetBase could be added to refer to the >>> "parent" or "outer object" >>> >>> I am not aware of all discussions (maybe it was already >>> discussed and rejected) and it's not easy to see the >>> whole impact of such change, but I don't think that the >>> idea is absurd, I did not invent it myself and it would >>> be more logical than the current behavior of "this" and >>> avoid repetitives operations (var self=this, >>> getters/setters, use of new (why do I have to use new in >>> the example above ?)) >>> >>> Regards >>> >>> A. Vitte >>> >>> Le 05/03/2012 13:16, 程劭非 a écrit : >>>> { >>>> "a":123, >>>> "b": this.a >>>> } >>>> >>>> If you simply want “this” in JSON.parse, it will not be >>>> hard to implement it in my library. >>>> But I guess the problem is we have no way to refer to >>>> its parent. Do you have any ideas? >>>> >>>> 2012/3/5 gaz Heyes <[email protected] >>>> <mailto:[email protected]>> >>>> >>>> It's a shame that "this" doesn't work with object >>>> literals :( >>>> How nice would this be: >>>> >>>> { >>>> "a":123, >>>> "b": this.a >>>> } >>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> [email protected] <mailto:[email protected]> >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> es-discuss mailing list >>>> [email protected] <mailto:[email protected]> >>>> https://mail.mozilla.org/listinfo/es-discuss >>> >>> -- >>> jCore >>> Email : [email protected] <mailto:[email protected]> >>> Web : www.jcore.fr <http://www.jcore.fr> >>> Webble : www.webble.it <http://www.webble.it> >>> Extract Widget Mobile : www.extractwidget.com >>> <http://www.extractwidget.com> >>> BlimpMe! : www.blimpme.com <http://www.blimpme.com> >>> >>> >> >> -- >> jCore >> Email : [email protected] <mailto:[email protected]> >> Web : www.jcore.fr <http://www.jcore.fr> >> Webble : www.webble.it <http://www.webble.it> >> Extract Widget Mobile : www.extractwidget.com >> <http://www.extractwidget.com> >> BlimpMe! : www.blimpme.com <http://www.blimpme.com> >> >> > > -- > jCore > Email : [email protected] <mailto:[email protected]> > Web : www.jcore.fr <http://www.jcore.fr> > Webble : www.webble.it <http://www.webble.it> > Extract Widget Mobile : www.extractwidget.com > <http://www.extractwidget.com> > BlimpMe! : www.blimpme.com <http://www.blimpme.com> > > -- jCore Email : [email protected] Web : www.jcore.fr Webble : www.webble.it Extract Widget Mobile : www.extractwidget.com BlimpMe! : www.blimpme.com
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

