将参数值传递给javascript函数

将参数值传递给javascript函数,javascript,Javascript,我试图向函数传递一个参数,但没有传递 <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function () {

我试图向函数传递一个参数,但没有传递

<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>

$(文档).ready(函数(){
职能人员(){
警报(“新创建的人员”);
}
Person.prototype.sayHello=函数(parm1){
警报('Hello from=',parm1);
};
var itsme=新的人();
是我,说你好(“Prem”);
var newfunction=itsme.sayHello;
newfunction.call(itsme);
});

这与传递参数无关;这是一个语义错误的简单问题。(您的控制台没有将其显示为语法错误,因为您可以向所有JavaScript函数传递额外的参数。)


alert('Hello from=',parm1)是问题所在<代码>警报
只接受一个参数,因此使用字符串合并。如果改为使用
alert('Hello from='+parm1)
,您应该会看到参数正在正常运行。

有两件事正在发生

  • 仅显示第一个参数,其他参数将被忽略
    window.alert(消息)
    ^^^接受单个参数
  • 您只将
    此值传递给了。您需要传递一个字符串作为第二个参数。
    fun.call(thisArg[,arg1[,arg2[,…])

    ^^^传递给sayHello的字符串


这不是语法错误<代码>警报
是一个函数,函数可以接受任意数量的参数<代码>警报
仅使用参数[0]。这不像
如果(arguments.length>1)抛出新的SyntaxError(“…”)
@C5H8NNaO4嘿,MSG。我会支持语法错误,因为我解释了为什么它不会抛出一个。这仍然是
警报
语法中的一个错误,即使浏览器的编译器没有捕获它。嘿:)不过,描述的唯一要点是1。如果事件循环的终止嵌套级别为非零,可以选择中止这些步骤。2.释放存储互斥锁。3.(可选)中止这些步骤4。向用户显示给定的
消息
。5.可选地,在等待用户确认消息时暂停。我不认为这是警报语法中的错误。@C5H8NNaO4好吧,API不能说服我,但确实说服了我。我同意,这是一个语义错误。jQuery在这里是无用的。
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