JavaScript valueOf() 方法——它實際上做了什麼?
本快速教程將解釋 JavaScript valueOf() 方法,它的作用,以及你可能使用它的原因。
JavaScript valueOf() 方法獲取原語 調用它的對象的值。通常你不需要調用它,但它確實有它的用例。
基元與對象
在 JavaScript 中,值或變量具有類型 的價值。一個原語 是一個不是對象的值,沒有方法或屬性,僅表示它存在的數據。
JavaScript 有 7 種原始數據類型:
- 字符串
- 編號
- 大整數
- 布爾值
- 未定義
- 符號
- 空
JavaScript valueOf() 方法語法
valueOf() 方法的語法如下:
OBJ.valueOf()
請注意:
- OBJ 是您希望接收原始值的任何對象
- valueOf() 將返回 OBJ 的原始值
- 如果 OBJ 沒有原始值 , 對象本身會被返回
valueOf() 不是你應該經常使用的東西,如果有的話——它會在需要對象的原始值的地方自動調用。
valueOf() 方法示例
重寫 valueOf() 方法
如果您使用自己的自定義對象,您可能希望覆蓋 valueOf() 返回的值 ,例如以特定格式返回對象的字符串表示形式。
這只需分配一個新的valueOf() 對像類的函數:
CLASS.prototype.valueOf = function() { return VALUE; };
請注意:
- 類 應該是您希望更新 valueOf() 的類的名稱 方法
- 值 應該是您希望在 valueOf() 時返回的值 為給定類的任何對象調用
使用 valueOf()
在下面的示例中,創建了一個 String 對象,並調用了 valueOf()——返回原始字符串值。
var myString = "hello"; console.log(myString.valueOf()); // Outputs "hello"
如您所見,在這種情況下它並不是很有用 - 您可以只使用原始的 myString 沒有 valueOf() 的變量 .
ValueOf 和對象
如果對像沒有原始值,則返回對象本身:
var myVar = {name: "Jim" , age: 23}; console.log(foo.valueOf()); // Outputs the original object
如果 valueOf() 方法被覆蓋可以設置原始值:
function customClass(name, age) { this.name = name; this.age = age; } customClass.prototype.valueOf = function() { return this.name + " is " + this.age; }; var myVar = new customClass("Jim", 23); console.log(myVar.valueOf());// Outputs "Jim is 23"
以上,valueOf() 返回 customClass 對象的字符串表示形式,將類中包含的信息連接到單個字符串中。 customClass 的對象 現在有了一個原始值。