Quiero hacer un método de objeto por función debido a muchos objetos que tengo que poner. Lo hago paso a paso desde las instrucciones, pero este método no funciona para mí. Creo que el principal problema está en función en función. Quiero que todos los objetos tengan su valor de la segunda función, así que nombro los campos "A", "B", "C", "D".
function pol () { this.name = name; this.moc = moc; this.square = square; this.A = A; this.B = B; this.C = C; this.D = D; this.price = function(){ if(wynik1 >18000){ return A;} if(wynik1 >10000){ return B;} if(wynik1 >5000){ return C;} if(wynik1>3000){ return D;} })(); } var Bingo = new pol ("Psyche", 370, 1.7, 4000, 4200, 4600, 5000); var Ringo = new pol("Psyche Myche", 370, 1.7, 4000, 4200, 4600, 5000); var Zingo = new pol("Psyche Ryche", 370, 1.7, 4000, 4200, 4600, 5000); var moc = pol.Ringo.moc var pow = pol.Ringo.square var prices = pol.Ringo.price();Tengo un problema en este paso, pero mi próximo paso es
var moc = function (){ if(k =="A"){return: pol.Ringo.moc} if(k =="A"){return: pol.Bingo.moc} if(k =="A"){return: pol.Zingo.moc} }();es posible?
Observe que cuando ejecuta:
var Ringo = new pol("Psyche Myche", 370, 1.7, 4000, 4200, 4600, 5000); ha agregado entradas en este constructor pol . Según esa lógica, también debe tener parámetros definidos en el constructor pol como:
function pol (name, moc, square, A, B, C, D) {...} Como nota al margen, tenga cuidado con la línea: var prices = pol.Ringo.price(); Usted define this.price como:
function(){ if(wynik1 >18000){ return A;} if(wynik1 >10000){ return B;} if(wynik1 >5000){ return C;} if(wynik1>3000){ return D;} })(); Esos paréntesis finales hacen que esta función devuelva un valor en lugar de establecer this.price en una función . Notará que copié el error de sintaxis (el paréntesis único después del cierre de la función) porque eso decide si devolverá un valor o no. Si elimina ese paréntesis, también debe eliminar el () . Decide si se supone que este this.price es una función o un valor. Basado en el hecho de que probó pol.Ringo.price() , probablemente quiera que sea una función como (también tenga en cuenta el parámetro agregado de wynik1 (suponiendo que luego llame a Ringo.price(some number) ):
this.price = function(wynik1) { if(wynik1 >18000){ return A;} if(wynik1 >10000){ return B;} if(wynik1 >5000){ return C;} if(wynik1>3000){ return D;} }; // no additional parentheses La función this.price tampoco debería usar A , B , C y D . En su lugar, debería acceder a los valores específicos que están conectados con un constructor pol específico : this.A , this.B , this.C y this.D .
La nota final es que el uso de pol.Ringo.moc (o cualquiera de sus otros parámetros no funcionará. Dado que pol es un constructor, cuando crea un new pol , no hay conexión con la variable pol . Ringo ahora señalará a un almacenamiento diferente que tiene toda la información copiada, luego se establece en función de los parámetros que obtiene en new pol(...) En su lugar, puede acceder a cualquiera de sus nuevas construcciones pol simplemente usando el nombre de la variable y haciendo algo como:
var moc = Ringo.moc var pow = Ringo.square var prices = Ringo.price();finalmente, con su ayuda, logré solucionarlo pero no entiendo por qué funciona.
var Ringo = new pol("Psyche", 370, 1.7, 4000, 4200, 4600, 5000); var prices = Ringo.price(4000, 4200, 4600, 5000); en Ringo.price(); Puedo poner cualquier número y funciona como 1, 2, 3, 4, pero si pongo "a", "b", "c", "d" o vacío, no. ¿Por qué no puedo simplemente ponerlo ahí?