---
# :blue_book: Object.prototype.valueOf()
---
> valueOf() მეთოდი გვიბრუნებს კონკრეტული ობიექტის პრიმიტიულ მნიშვნელობას. უკეთ რო ვთქვათ JavaScript იყენებს valueOf() მეთოდს იმისთვის რომ ობიექტი დააკონვერტიროს პრიმიტივ მნიშვნელობად.
---
# :pencil: Syntax/სინტაქსი
---
```
valueOf()
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function() {
return this.number;
};
```
---
# :bulb: Description/აღწერა
---
> თანდაყოლილად ყველა ობიექტს valueOf() მეთოდი გადაეცემა მემკვიდრეობით, იმ შემთხვევაში თუ ობიექტი ვერ აბრუნებს შესაბამის პრიმიტიულ მნიშვნელობას მაშინ valueOf() მეთოდი აბრუნებს თავად ობიექტს.
> გასათვალისწინებელია ის რომ მნიშვნელობის გამოტანის დროს ობიექტის მნიშვნელობას კიდევ ვუმატებთ რაღაც სხვას რომ მივიღოთ პრიმიტიული მნიშვნელობა მაგალითად:
```
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function() {
return this.number;
};
const object1 = new MyNumberType(4);
// როდესაც ვიყენებთ valueOf() მეთოდს მნიშვვნელობის
// გამოტანის დროს თავად ობიექტს ვუმატებთ რაღაცას(ეს შეიძლება
// იყოს როგორც რიცხვი, ასევე სტრინგი, თავად ობიექტი,
// არაი, ცარიელი სტრინგი და ა.შ.)
console.log(object1 + 3);
// მოსალოდნელი შედეგი: 7
```
---
# :key: Example/მაგალითი
---
```
// მოსალოდნელი შედეგები თუ ობიექტის მნიშვნელობას
// valueOf() მეთოდის დროს დავუმატებთ შემდეგ მონაცემებს:
+"5" // 5 (string to number)
+"" // 0 (string to number)
+"1 + 2" // NaN (doesn't evaluate)
+new Date() // same as (new Date()).getTime()
+"foo" // NaN (string to number)
+{} // NaN
+[] // 0 (toString() returns an empty string list)
+[1] // 1
+[1,2] // NaN
+new Set([1]) // NaN
+BigInt(1) // Uncaught TypeError: Cannot convert a BigInt value to a number
+undefined // NaN
+null // 0
+true // 1
+false // 0
```
---
### :bookmark_tabs: resources / წყარო
---
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf#using_unary_plus
> https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.prototype.tolocalestring
---