JavaScript >> Javascript 文檔 >  >> JavaScript

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 的對象 現在有了一個原始值。


Tutorial JavaScript 教程
  1. 在 JavaScript 中檢查字謎的兩種方法

  2. 兩個新的反應框架

  3. 創建靈活的組件

  4. 反應彈簧輪播js

  5. 如何使用 javascript 更新 parse.com 中的當前對象?

  6. NGConf 2019 - 並非每個應用程序都是 SPA

  7. Jekyll:Comments.app 小部件未顯示在我的頁面上

  1. 如何在一個變量中收集 HTML 頁面的所有腳本標籤

  2. 關於管理狀態的最佳實踐的問題

  3. 如何清空 JavaScript 數組

  4. JavaScript 中的 (function() { } )() 結構是什麼?

  5. 什麼是 GraphQL 以及如何使用它

  6. 如何在 Javascript 中重新拋出異常,但保留堆棧?

  7. 單獨按不同表格的表格標題排序

  1. 如何使用 jQuery Mobile 構建 RSS 閱讀器

  2. 從 Node 到 Rust

  3. Angular 和 REST

  4. 第 26 天 - 使用 EJS(第 3 部分) - 30 天學習 Node JS [迷你係列]