--- title: Object.prototype.valueOf() slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf ---
{{JSRef}}

Phương thức valueOf() trả về giá trị nguyên thuỷ(primitive value) của object đang được nói tới.

Cú pháp

object.valueOf()

Giá trị trả về

Giá trị nguyên thuỷ(primitive value) của object đang được nói tới.

Miêu tả

JavaScript gọi phương thức valueOf để chuyển đổi một object sang một giá trị nguyên thuỷ. Bạn hiếp khi cần gọi phương thức valueOf bởi chính bạn; JavaScript tự động gọi nó khi gặp phải một object ở chỗ mà một giá trị nguyên thuỷ cần được trả về.

Mặc định, phương thức valueOf được kế thừa cho mọi object khi mà mọi object đó được kế thừa từ {{jsxref("Object")}}. Mọi core-object được tạo sẵn để ghi đè phương thức này để trả về giá trị phù hợp. Nếu một object ko có giá trị nguyên thuỷ, valueOf sẽ trả về chính object đó.

Bạn có thể sử dụng valueOf trong code của bạn để chuyển đổi một object được tạo sẵn thành một giá trị nguyên thuỷ. Khi bạn tạo một object tuỳ chỉnh, bạn có thể ghi đè Object.prototype.valueOf() để gọi phương thức tuỳ chỉnh thay vì phương thức mặc định {{jsxref("Object")}}.

Ghi đè valueOf cho object tuỳ chỉnh

Bạn có thể tạo một hàm để được gọi thay thể cho phương thức valueOf. Hàm của bạn phải không nhận tham số nào cả.

Giả sử bạn có một object loại MyNumberType và bạn muốn tạo một phương thức valueOf cho nó. Phần code sau đây gán một hàm định nghĩa bới người dùng cho phương thức valueOf của object:

MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };

 

Với phần code phía trên, mỗi khi một object loại MyNumberType được sử dụng trong bối cảnh mà nó cần được biểu diễn bởi một giá trị nguyên thuỷ, JavaScript sẽ tự động gọi hàm đã được viết trên đây.

Một phương thức valueOf của object thường được gọi bởi JavaScript, nhưng bạn có thể tự gọi nó bằng cách sau:

myNumberType.valueOf()

Note: Objects in string contexts convert via the {{jsxref("Object.toString", "toString()")}} method, which is different from {{jsxref("String")}} objects converting to string primitives using valueOf. All objects have a string conversion, if only "[object type]". But many objects do not convert to number, boolean, or function.

Ví dụ

Sử dụng valueOf

function MyNumberType(n) {
    this.number = n;
}

MyNumberType.prototype.valueOf = function() {
    return this.number;
};

var myObj = new MyNumberType(4);
myObj + 3; // 7

Đặc tả

Specification Status Comment
{{SpecName('ES1')}} {{Spec2('ES1')}} Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.2.4.4', 'Object.prototype.valueOf')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}} {{Spec2('ES6')}}  
{{SpecName('ESDraft', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}} {{Spec2('ESDraft')}}  

Tính tương thích trình duyệt

{{Compat("javascript.builtins.Object.valueOf")}}

See also