2016-03-05 58 views
-3

的index.html:我不明白這個簡單的JavaScript函數是如何工作

<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例子中,「foo2.printThis」等於一個新的功能。這是什麼意思,它叫什麼,爲什麼你會重新定義這樣的功能,你如何使用它?我有一個Java背景,這對我來說沒有意義。

+0

看起來像嘗試製作[自定義對象](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#Custom_objects)。 –

+0

我可以問你你的文檔的_body_在哪裏? – Lends

回答

1

foo2.js中的腳本定義了一個名爲foo2的構造函數,該函數在其實例中添加了一個名爲printThis的方法。

斜線腳本實例化該構造函數,並將全局變量foo2的值更改爲實例而不是構造函數。

然後,它用一個稍微不同的方法替換實例的printThis方法(在構造函數中定義)。

這沒什麼意義,但你可以做到,是的。

+0

如何將「輸入」傳遞給新的foo2.print這個函數在index.html中? –

+0

@DarkNight替換'printThis'方法後,新函數完全忽略了傳遞的參數。如果你願意,你仍然可以使用'foo2.printThis(「我被忽略」)。 – Oriol

+0

在我的本地例子中(它有更多的行然後我提供了),'input'沒有被傳遞給'index.html'中任何地方新創建的函數。但'foo2.printThis'有一個輸出。如何將'input'傳遞給它呢?這是我的問題。 –

0

在index.html代碼中實際覆蓋printThis對foo2對象的特定實例。

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) 
+0

在我的本地例子中(它有更多的行,然後我提供了),'input'沒有被傳遞給'index.html'中任何地方新創建的函數。但'foo2.printThis'有一個輸出。如何將'input'傳遞給它呢? –

+0

你可以在你調用函數的地方添加代碼嗎? –

0

在JavaScript中,函數就像可執行變量。將函數作爲變量引用並執行函數的區別在於使用()。當你做了

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

重新定義功能printThis。但是當你做

foo2.printThis("hello"); 

你執行的功能,並打印到控制檯。

+0

在我的本地例子(它有更多的行,然後我提供),'輸入'沒有被傳遞到'index.html'中任何地方的新創建的函數。但'foo2.printThis'有一個輸出。如何將'input'傳遞給它呢?這是我的問題。 –

+0

當您在JavaScript中省略參數時,它會將參數的值設置爲「未定義」,並且只要該參數在函數中從不使用,就不會拋出錯誤。您重新定義了'foo2.printThis',以便該參數不再在函數中實際使用,因此參數變爲可選項,並且無論您傳遞給它什麼參數,它都將打印'「done」。這有幫助嗎? – 4castle

+0

好吧,假設函數確實接受了一個輸入,而不是在輸出輸入時打印「done」。那時輸入是從哪裏來的? –

相關問題