Path: csiph.com!2.eu.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Alessandro Pellizzari Newsgroups: it.comp.lang.javascript Subject: Re: =?us-ascii?Q?oggetto=2EnomeFunzione=28=22stringa=22=29=2EoperaS?= =?us-ascii?Q?ullaFunzione=28=29?= Date: 24 Jan 2016 14:14:03 GMT Lines: 49 Message-ID: References: <12069110-6044-4930-9e22-4304304ea799@googlegroups.com> <3855b4c6-80be-4975-a9a2-e38e2fae4cc5@googlegroups.com> <752d8b83-5456-41af-b8ed-4fd7043cd51b@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net Hp86STJB+QX+do+10qIDPwk3sGN9urtg3Wm9YpipS+flbm4yA= Cancel-Lock: sha1:Q2otD7/zC4IlRdiYM72wp2YW8R0= User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) Xref: csiph.com it.comp.lang.javascript:7978 Il Sun, 24 Jan 2016 05:48:21 -0800, albaserver ha scritto: > Il giorno domenica 24 gennaio 2016 14:33:50 UTC+1, Alessandro Pellizzari > ha scritto: >> jQuery ritorna quasi sempre un "oggetto jQuery" che wrappa altre cose, >> tipicamente un array di elementi del DOM. > > n.fn.init[3] > > un array init dell'oggetto fn, proprietà dell'oggetto n. Al quale sono > associate tutte le proprietà tipiche di jQuery che contengono delle > funzioni per operarci (css, animate ecc.). > > Ma nel source code di jQuery non ho capito come creano questo oggetto. Qualcosa del genere: var MyString = function(val) { this.val = val; } MyString.prototype.append = function(v2) { return new MyString(this.v + v2); } In questo modo wrappi sempre il risultato nell'oggetto stesso, e puoi fare var pippo = (new MyString('p')).append('ip').append('po'); console.log(pippo.val); (Codice non testato. "Fai come dico, non come faccio" :) ) Poi jQuery usa un trucchetto banale per evitare il new, qualcosa tipo var MyString = function(val) { if (this == document) { return new MyString(val); } else { this.val = val; } } Per cui puoi fare var pippo = MyString('p').append('ip').append('po'); (vedi disclaimer sopra) Bye.