javascript函数对象原型

时间:2014-08-14 10:41:09

标签: javascript html

为什么没有调用原型函数..当图像是clicket?

Html代码: -

    <!DOCTYPE html>
    <html style="height: 100%;">
    <head>
      <script type="text/javascript" src="tt.js"></script>
    </head>
    <body>

    <p>This example calls a function which performs a calculation, and returns the result:</p>

    <p id="demo"></p>

    <input type="image" src="http://t2.gstatic.com/images?q=tbn:ANd9GcSTcJA5J-LOj0HOP1ZMzdSQIsxwuguFdtlesHqzU15W8TXx232pFg" onclick="myFunction('Info clicked')"/>

   <script>
     var a = new myFunction();
     document.getElementById("demo").innerHTML = a.k;
    </script>

    </body>
    </html>

java脚本: -

function myFunction(l) {
    this.k = "hello";
    alert(this.k);

    var t = this.temp(l);
    alert(t);


}

myFunction.prototype.temp = function(a)
{
    alert(a);

    return 10;
}

如果我把它放在html页面体内,它可以工作: -

<script>
var a = new myFunction();
document.getElementById("demo").innerHTML = a.k;
</script>

2 个答案:

答案 0 :(得分:1)

因为你在构造函数上调用this.temp()而不在它的实例上调用。

您需要使用new创建实例。

new myFunction('Info clicked')

请注意,这没有意义。如果要在构造函数运行时执行某些操作,则应将方法分配给构造函数而不是原型。

答案 1 :(得分:0)

如果您想坚持自己的javascript定义,解决此问题所需要做的就是将html代码中的属性onClick更改为new myFunction("...");

<input type="image" src="http://..." onclick="new myFunction('Info clicked')"/>