j'ai, un mvc avec :
function Model() // Observable + State
{
...
// Notify the observers to update
function Notify()
{
for( var i in this.observers )
{
this.observers[i].Update( this );// PROBLEME ICI
}
}
this.Notify=Notify;
...
}
et, d'autre part je souhaite ajouter une/des méthode/s à l'objet Array :
Array.prototype.include=function(s){
for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}}
return false;
}
bien sûr, j'ai testé "à part" cette méthode #include, ça roule, MAIS
avec mon Model() plus haut, j'obtiens l'erreur suivante :
Uncaught TypeError: Object function (s){
for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}}
return false;
} has no method 'Update'
qui met en cause la ligne où j'ai écrit :
this.observers[i].Update( this );// PROBLEME ICI
je ne pige pas du tout pourquoi sinon, qu'il faudrait faire gaffe à
l'ordre dans lequel on ajoute des méthodes par #prototype ?
--
« L'amour, c'est quand on rencontre quelqu'un
qui vous donne de vos nouvelles. »
(André Breton)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
unbewusst.sein
Une Bévue wrote:
j'ai, un mvc avec : function Model() // Observable + State { ... // Notify the observers to update function Notify() { for( var i in this.observers ) { this.observers[i].Update( this );// PROBLEME ICI } } this.Notify=Notify;
... }
et, d'autre part je souhaite ajouter une/des méthode/s à l'objet Array : Array.prototype.include=function(s){ for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}} return false; }
bien sûr, j'ai testé "à part" cette méthode #include, ça roule, MAIS avec mon Model() plus haut, j'obtiens l'erreur suivante : Uncaught TypeError: Object function (s){ for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}} return false; } has no method 'Update' qui met en cause la ligne où j'ai écrit : this.observers[i].Update( this );// PROBLEME ICI
je ne pige pas du tout pourquoi sinon, qu'il faudrait faire gaffe à l'ordre dans lequel on ajoute des méthodes par #prototype ?
Un certain "Richard Cornford" m'a donné la réponse sur "comp.lang.javascript" (Message-ID: ). ça provient de la boucle for : for( var i in this.observers )
comme this.observers est une Array et que j'ai ajouté la méthode #include à cette Array, le supposé objet this.observers[include] n'a pas de méthode Update...
j'ai changé la boucle en : for( var i = 0, l = this.observers.length; i < l; i++ ) { // et ça roule !!!
-- « Chez un homme politique, les études c'est quatre ans de droit, puis toute une vie de travers. » (Coluche)
Une Bévue <unbewusst.sein@fai.invalid> wrote:
j'ai, un mvc avec :
function Model() // Observable + State
{
...
// Notify the observers to update
function Notify()
{
for( var i in this.observers )
{
this.observers[i].Update( this );// PROBLEME ICI
}
}
this.Notify=Notify;
...
}
et, d'autre part je souhaite ajouter une/des méthode/s à l'objet Array :
Array.prototype.include=function(s){
for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}}
return false;
}
bien sûr, j'ai testé "à part" cette méthode #include, ça roule, MAIS
avec mon Model() plus haut, j'obtiens l'erreur suivante :
Uncaught TypeError: Object function (s){
for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}}
return false;
} has no method 'Update'
qui met en cause la ligne où j'ai écrit :
this.observers[i].Update( this );// PROBLEME ICI
je ne pige pas du tout pourquoi sinon, qu'il faudrait faire gaffe à
l'ordre dans lequel on ajoute des méthodes par #prototype ?
Un certain "Richard Cornford" m'a donné la réponse sur
"comp.lang.javascript" (Message-ID:
<6437f80d-fee6-494a-888a-a556be789736@w5g2000yqw.googlegroups.com>).
ça provient de la boucle for :
for( var i in this.observers )
comme this.observers est une Array et que j'ai ajouté la méthode
#include à cette Array, le supposé objet this.observers[include] n'a pas
de méthode Update...
j'ai changé la boucle en :
for( var i = 0, l = this.observers.length; i < l; i++ ) {
// et ça roule !!!
--
« Chez un homme politique, les études c'est quatre ans de droit,
puis toute une vie de travers. »
(Coluche)
j'ai, un mvc avec : function Model() // Observable + State { ... // Notify the observers to update function Notify() { for( var i in this.observers ) { this.observers[i].Update( this );// PROBLEME ICI } } this.Notify=Notify;
... }
et, d'autre part je souhaite ajouter une/des méthode/s à l'objet Array : Array.prototype.include=function(s){ for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}} return false; }
bien sûr, j'ai testé "à part" cette méthode #include, ça roule, MAIS avec mon Model() plus haut, j'obtiens l'erreur suivante : Uncaught TypeError: Object function (s){ for(var i=0,l=this.length;i<l;i++){if(this[i]===s){return true;}} return false; } has no method 'Update' qui met en cause la ligne où j'ai écrit : this.observers[i].Update( this );// PROBLEME ICI
je ne pige pas du tout pourquoi sinon, qu'il faudrait faire gaffe à l'ordre dans lequel on ajoute des méthodes par #prototype ?
Un certain "Richard Cornford" m'a donné la réponse sur "comp.lang.javascript" (Message-ID: ). ça provient de la boucle for : for( var i in this.observers )
comme this.observers est une Array et que j'ai ajouté la méthode #include à cette Array, le supposé objet this.observers[include] n'a pas de méthode Update...
j'ai changé la boucle en : for( var i = 0, l = this.observers.length; i < l; i++ ) { // et ça roule !!!
-- « Chez un homme politique, les études c'est quatre ans de droit, puis toute une vie de travers. » (Coluche)
Mickaël Wolff
On 13/10/11 14:01, Une Bévue wrote:
j'ai changé la boucle en : for( var i = 0, l = this.observers.length; i< l; i++ ) { // et ça roule !!!
Selon la version de JS que tu requiert, tu peux utiliser Array.forEach pour ça. :)
On 13/10/11 14:01, Une Bévue wrote:
j'ai changé la boucle en :
for( var i = 0, l = this.observers.length; i< l; i++ ) {
// et ça roule !!!
Selon la version de JS que tu requiert, tu peux utiliser
Array.forEach pour ça. :)
j'ai changé la boucle en : for( var i = 0, l = this.observers.length; i< l; i++ ) { // et ça roule !!!
Selon la version de JS que tu requiert, tu peux utiliser Array.forEach pour ça. :)
ah oui ? justement je comptaot l'implémenter...
ca se requert comment une version spécifique de JS et quelle est la verion à partir de laquelle le #forEach est implémenté ?
merci pour l'info !
Mickaël Wolff
On 17/10/11 06:51, Une Bévue wrote:
ca se requert comment une version spécifique de JS et quelle est la verion à partir de laquelle le #forEach est implémenté ?
Il faut le spécifier dans la balise script. Mais attention, il faut que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si tu envisages d'utiliser jQuery, arrête de suite. Tout au moins d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé (ils prétendent que c'est une fonctionalité).
On 17/10/11 06:51, Une Bévue wrote:
ca se requert comment une version spécifique de JS et quelle est la
verion à partir de laquelle le #forEach est implémenté ?
Il faut le spécifier dans la balise script. Mais attention, il faut
que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si
tu envisages d'utiliser jQuery, arrête de suite. Tout au moins
d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé
(ils prétendent que c'est une fonctionalité).
ca se requert comment une version spécifique de JS et quelle est la verion à partir de laquelle le #forEach est implémenté ?
Il faut le spécifier dans la balise script. Mais attention, il faut que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si tu envisages d'utiliser jQuery, arrête de suite. Tout au moins d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé (ils prétendent que c'est une fonctionalité).
unbewusst.sein
Mickaël Wolff wrote:
Il faut le spécifier dans la balise script. Mais attention, il faut que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
OK, merci beaucoup.
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si tu envisages d'utiliser jQuery, arrête de suite. Tout au moins d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé (ils prétendent que c'est une fonctionalité).
Ah non, pas du tout, justement j'évite absolument...
-- « L'humanité qui devrait avoir six mille ans d'expérience, retombe en enfance à chaque génération. » (Tristan Bernard)
Mickaël Wolff <mickael.wolff@laposte.net> wrote:
Il faut le spécifier dans la balise script. Mais attention, il faut
que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
OK, merci beaucoup.
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si
tu envisages d'utiliser jQuery, arrête de suite. Tout au moins
d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé
(ils prétendent que c'est une fonctionalité).
Ah non, pas du tout, justement j'évite absolument...
--
« L'humanité qui devrait avoir six mille ans d'expérience,
retombe en enfance à chaque génération. »
(Tristan Bernard)
Il faut le spécifier dans la balise script. Mais attention, il faut que le navigateur le supporte.
<script type='text/javascript;version=1.8'>
OK, merci beaucoup.
Au fait, je vois que tu utilise beaucoup l'augmentation des types. Si tu envisages d'utiliser jQuery, arrête de suite. Tout au moins d'augmenter Object, car jQuery a un bogue qui ne sera jamais corrigé (ils prétendent que c'est une fonctionalité).
Ah non, pas du tout, justement j'évite absolument...
-- « L'humanité qui devrait avoir six mille ans d'expérience, retombe en enfance à chaque génération. » (Tristan Bernard)