Article View: pl.comp.lang.javascript
Article #51044Re: Dodawanie nowej metody do istniejącego obiektu
From: Herr
Date: Wed, 21 Mar 2012 22:23
Date: Wed, 21 Mar 2012 22:23
49 lines
2757 bytes
2757 bytes
CT wrote: > Chcę rozszerzać istniejący obiekt prototype o nowe metody. Utworzyłem do > tego wstępny kod, który jest tutaj: > > http://jsfiddle.net/u9e7R/9/ > > Problem jednak w tym, że addMethod (bazowałem na > http://ejohn.org/blog/javascript-method-overloading/) poprawnie dodaje > mi nową metodę do obiektu prototype, ale już np. w IE 8,7 nie działa mi > poprawnie. > > W konsekwencji wywołanie jsCode().test2().test(); powoduje błąd, gdzie > IE 8,7 stwierdza, że "Obiekt nie obsługuje właściwości lub metody > "test2"". Czyli pod IE8 metoda test2 nie została dodana do obiektu > prototype. > > Jeżeli chodzi o znalezienie samego obiektu prototype to "return > object.constructor.prototype;" w IE8 działa. A przynajmniej tak mi się > wydaje, że działa poprawnie. no tak. Ale czy w wyniku działania dostajesz to, co dostać chciałeś? http://stackoverflow.com/questions/8024879/is-object-getprototypeof-same-as-object-constructor-prototype-in-javascript Wygląda mi na to że niepotrzebnie nadpisujesz konstruktor dla jsCode: https://gist.github.com/1664895 > Niemniej jednak addMethod nie działa mi w < IE8. Ma ktoś pomysł co mogę z tym zrobić? Testowane w IE9 przestawionym w tryb IE8, więc być może niecnie Cię okłamuję i tak naprawdę w prawdziwym IE8 wcale nie zadziała... niemniej u mnie pomogło: 1) usunięcie przypisania constructor: jsCode z jsCode.init.prototype (cała linijka won) 2) zmiana sposobu pobierania prototypu obiektu w metodzie addMethod (definujesz sobie metodę getPrototypeObject a potem z niej nie korzystasz...): zamień var object = Object.getPrototypeOf(this); na var object = this.getPrototypeObject (this); -- Herr C(...)a mój e-mail? http://cerbermail.com/?YWDqT8olYO
Technical Details
Message-ID:
<jkdkdm$5n8$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<20065128.446.1331810614267.JavaMail.geo-discussion-forums@ynbo9>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Herr <somepoorfella@someserver.out.there> Newsgroups: pl.comp.lang.javascript Subject: Re: Dodawanie nowej metody do istniejącego obiektu Date: Wed, 21 Mar 2012 23:23:53 +0100 Organization: Megadeath, Inc. Lines: 49 Message-ID: <jkdkdm$5n8$1@node2.news.atman.pl> References: <20065128.446.1331810614267.JavaMail.geo-discussion-forums@ynbo9> NNTP-Posting-Host: 89-75-143-232.dynamic.chello.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1332368631 5864 89.75.143.232 (21 Mar 2012 22:23:51 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Wed, 21 Mar 2012 22:23:51 +0000 (UTC) User-Agent: Noworyta News Reader/2.9 X-Antivirus: avast! (VPS 120321-0, 2012-03-21), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit