我不明白这个简单的javascript函数是如何工作的

时间:2016-03-05 19:37:22

标签: javascript function

index.html:

<html>
<head>
<script src="foo2.js"></script>
</head>

<script>
var foo2 = new foo2();
foo2.printThis = function (input){
   console.log("done");
}

</script>
</html>

foo2.js:

function foo2(){    
    this.printThis = function (input){
      console.log(input);
   }
}

我认为应该使用foo2的方式是这样的:

var foo2 = new foo2();
foo2.printThis("hello");

但在我的index.html示例中,&#34; foo2.printThis&#34;等于新的功能。这是什么意思,它叫什么,你为什么要定义这样的函数,你如何使用它?我有Java背景,这对我没用。

3 个答案:

答案 0 :(得分:1)

foo2.js中的脚本定义了一个名为foo2的构造函数,它将一个名为printThis的方法添加到其实例中。

倾斜脚本实例化该构造函数,并将全局变量foo2的值更改为实例而不是构造函数。

然后,它用稍微不同的方法替换实例的printThis方法(在构造函数中定义)。

这没有多大意义,但你可以做到,是的。

答案 1 :(得分:0)

在index.html代码中实际覆盖了对于特定foo2对象实例的printThis。

var foo2 = new foo2();
foo2.printThis = function (input){
   console.log(input +" I am in index");
}

foo2.printThis('test'); //print > test I am in index

var foo3 = new foo2();
foo3.printThis('test'); //print > test (as implemented in foo)

答案 2 :(得分:0)

在JavaScript中,函数就像可执行变量。将函数作为变量引用和执行函数之间的区别在于使用()。当你做了

foo2.printThis = function (input){
   console.log("done");
}

重新定义了函数printThis。但是当你做到了

foo2.printThis("hello");

您执行了该功能并打印到控制台。