2013-12-10 4 views
0

Я пытаюсь передать параметр моей функции, но она не проходит.Передача значения параметра функции javascript

<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
     </script> 
     <script> 
      $(document).ready(function() { 
       function Person() { 
        alert('New Person Created'); 
       } 
       Person.prototype.sayHello = function (parm1) { 
        alert('Hello from = ', parm1); 
       }; 
       var itsme = new Person(); 
       itsme.sayHello('Prem'); 
       var newfunction = itsme.sayHello; 
       newfunction.call(itsme); 
      }); 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 
+0

JQuery бесполезно ее е. – leaf

ответ

0

Это не имеет никакого отношения к параметрам; это просто вопрос наличия семантической ошибки. (Ваша консоль не показывает ее как синтаксическую ошибку, потому что вам разрешено передавать дополнительные параметры во все функции JavaScript.)

alert('Hello from = ', parm1);. alert принимает только один аргумент, поэтому используйте конкатентацию строк. Если вы используете alert('Hello from = ' + parm1), вы должны увидеть, что параметр проходит правильно.

+0

Это не синтаксическая ошибка. 'alert' - это функция, функции могут принимать любое количество аргументов. 'alert' просто использует только аргументы [0]. Это не похоже на 'if (arguments.length> 1) throw new SyntaxError (" ... ")' – C5H8NNaO4

+0

@ C5H8NNaO4 Эй, MSG. Я буду стоять за синтаксической ошибкой, так как я объяснил, почему она не бросает ее. Это ** все еще является ошибкой в ​​синтаксисе 'alert', даже если компилятор браузера не поймает его. –

+0

Эй :) Тем не менее, единственными точками, описанными в [Спецификация WebAPI] (http://www.w3.org/TR/html5/webappapis.html#dom-alert), являются 1. Если уровень вложенности завершения цикла события не равен -zero, необязательно прервать эти шаги. 2. Отпустите мьютексы хранения. 3. При необходимости отмените эти шаги. 4. Покажите данное сообщение «пользователю». 5. Необязательно, пауза, ожидая подтверждения пользователем сообщения. Я не вижу, где это должно быть ** ошибка ** в синтаксисе предупреждения. – C5H8NNaO4

2

Происходит две вещи.

  • window.alert отображает только первый аргумент, остальные игнорируются
    window.alert(message);
                              ^^^Accepts a single argument
  • Ты только пропускать thisValue к Function.prototype.call. Вам нужно передать строку в качестве второго аргумента.
    fun.call(thisArg[, arg1[, arg2[, ...]]])
                                      ^^^ The string passed to sayHello

function Person() { 
    alert('New Person Created'); 
} 
Person.prototype.sayHello = function (parm1) { 
    alert('Hello from = ' + parm1); 
    //     ^^^ You should pass a single argument to alert, you can concatenate strings with a + 
}; 

var itsme = new Person(); 
itsme.sayHello('Prem'); 
var newfunction = itsme.sayHello; 
newfunction.call(itsme, "new function"); 
//       ^^^ You weren't actually passing any parameter 
+0

+1 для обнаружения ошибки 'call', которую я пропустил. –

Смежные вопросы