2017-09-25 125 views
3

我想澄清這個疑問,但可能有解決方案我不知道,所以請幫助我。通常在編寫代碼時,我們調用一個函數如何調用靜態函數,如成員函數

function call(a){ 
    /*some task*/ 
} 

var a = "HELLO"; 
var data = call(a); 

所以通過值將函數call()內部處理和一定的價值迴歸data

但在調用一些內置的JavaScript功能,如toString()toLowerCase()的情況下,我們不會通過函數內部的值,而我們所說的一樣a.toLowercase()功能。

這種類型的函數調用是如何在幕後工作的,還有什麼方法可以像調用內置函數一樣調用自定義函數嗎?提前致謝。

+0

'的toString()'和'toLowerCase()'是物體本身的方法。 – Gendarme

+0

[查看對象方法](https://www.w3schools.com/js/js_object_methods.asp) –

+0

你正在尋找什麼是類,也許是原型繼承。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes – Strikegently

回答

3

我認爲可能的原因可能是這些功能綁定到字符串對象原型,這就是爲什麼你可以稱它爲a.toLowerCase()
E.g: String.prototype.toLowerCase()

我想如果你嘗試添加功能,String對象的原型。你將能夠以上述方式稱呼它。
例如,

String.prototype.distance = function (char) { 
 
    var index = this.indexOf(char); 
 

 
    if (index === -1) { 
 
     alert(char + " does not appear in " + this); 
 
    } else { 
 
     alert(char + " is " + (this.length - index) + " characters from the end of the string!"); 
 
    } 
 
}; 
 

 
"Hello".distance("H");

上面的例子是從連接:javascript: add method to string class

2

你實際上指的方法,該方法從功能略有不同(它們可以被想象爲一個面向對象的等效的功能,無論如何)。基本上,javascript中的每個圖元(如字符串,數字等)都可以用作對象:

var foo = "Bar"; // Bar 
var baz = foo.toLowerCase() // bar 

foo這裏是一個字符串。當使用toLowerCase方法時,javascript實際上將字符串包裝在一個String對象中,以使其方法可供使用。

// behind the scenes 
var magicTemporaryFoo = new String(foo); 
var magicTemporaryFooMethodResult = magicTemporaryFoo.toLowerCase(); 

如果你想開始使用對象和他們的方法,我建議你一個非常好讀,「You don't know Js - This & Object Prototypes

相關問題