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背景,这对我没用。
答案 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");
您执行了该功能并打印到控制台。