खोज…
प्रकार का
typeof
वह 'आधिकारिक' फ़ंक्शन है जिसका उपयोग जावास्क्रिप्ट में type
करने के लिए किया जाता है, हालांकि कुछ मामलों में यह कुछ अप्रत्याशित परिणाम प्राप्त कर सकता है ...
1. तार
typeof "String"
या
typeof Date(2011,01,01)
"स्ट्रिंग"
2. नंबर
typeof 42
"संख्या"
3. बूल
typeof true
(मान्य मान true
और false
)
"बूलियन"
4. वस्तु
typeof {}
या
typeof []
या
typeof null
या
typeof /aaa/
या
typeof Error()
"वस्तु"
5. समारोह
typeof function(){}
"समारोह"
6. अपरिभाषित
var var1; typeof var1
"अपरिभाषित"
कंस्ट्रक्टर नाम से ऑब्जेक्ट प्रकार प्राप्त करना
जब typeof
ऑपरेटर के साथ किसी को object
यह कुछ हद तक श्रेणी में आता है ...
व्यवहार में आपको इसे संकीर्ण करने की आवश्यकता हो सकती है कि यह वास्तव में किस प्रकार की 'वस्तु' है और इसे करने का एक तरीका यह है कि ऑब्जेक्ट कंस्ट्रक्टर नाम का उपयोग करके यह प्राप्त किया जाए कि वास्तव में वस्तु का स्वाद क्या है: Object.prototype.toString.call(yourObject)
1. स्ट्रिंग
Object.prototype.toString.call("String")
"[वस्तु स्ट्रिंग]"
2. संख्या
Object.prototype.toString.call(42)
"" ऑब्जेक्ट नंबर] "
3. बूल
Object.prototype.toString.call(true)
"[ऑब्जेक्ट बूलियन]"
4. वस्तु
Object.prototype.toString.call(Object())
या
Object.prototype.toString.call({})
"[वस्तु वस्तु]"
5. समारोह
Object.prototype.toString.call(function(){})
"" ऑब्जेक्ट फंक्शन] "
6. तारीख
Object.prototype.toString.call(new Date(2015,10,21))
"[वस्तु दिनांक]"
7. रेगेक्स
Object.prototype.toString.call(new RegExp())
या
Object.prototype.toString.call(/foo/);
"[ऑब्जेक्ट RegExp]"
8. ऐरे
Object.prototype.toString.call([]);
"[वस्तु ऐरे]"
9. नल
Object.prototype.toString.call(null);
"[ऑब्जेक्ट नल]"
10. अनिर्धारित
Object.prototype.toString.call(undefined);
"[ऑब्जेक्ट अनिर्धारित]"
11. त्रुटि
Object.prototype.toString.call(Error());
"[ऑब्जेक्ट त्रुटि]"
किसी वस्तु का वर्ग खोजना
यह पता लगाने के लिए कि क्या किसी निश्चित कंस्ट्रक्टर द्वारा किसी वस्तु का निर्माण किया गया था या उसमें से विरासत में मिला था, आप instanceof
कमांड का उपयोग कर सकते हैं:
//We want this function to take the sum of the numbers passed to it
//It can be called as sum(1, 2, 3) or sum([1, 2, 3]) and should give 6
function sum(...arguments) {
if (arguments.length === 1) {
const [firstArg] = arguments
if (firstArg instanceof Array) { //firstArg is something like [1, 2, 3]
return sum(...firstArg) //calls sum(1, 2, 3)
}
}
return arguments.reduce((a, b) => a + b)
}
console.log(sum(1, 2, 3)) //6
console.log(sum([1, 2, 3])) //6
console.log(sum(4)) //4
ध्यान दें कि आदिम मूल्यों को किसी भी वर्ग के उदाहरण नहीं माना जाता है:
console.log(2 instanceof Number) //false
console.log('abc' instanceof String) //false
console.log(true instanceof Boolean) //false
console.log(Symbol() instanceof Symbol) //false
जावास्क्रिप्ट के अलावा null
और undefined
हर मूल्य में एक constructor
गुण भी होता है जो उस फ़ंक्शन को संग्रहीत करता है जिसे इसका निर्माण करने के लिए उपयोग किया गया था। यह भी आदिम के साथ काम करता है।
//Whereas instanceof also catches instances of subclasses,
//using obj.constructor does not
console.log([] instanceof Object, [] instanceof Array) //true true
console.log([].constructor === Object, [].constructor === Array) //false true
function isNumber(value) {
//null.constructor and undefined.constructor throw an error when accessed
if (value === null || value === undefined) return false
return value.constructor === Number
}
console.log(isNumber(null), isNumber(undefined)) //false false
console.log(isNumber('abc'), isNumber([]), isNumber(() => 1)) //false false false
console.log(isNumber(0), isNumber(Number('10.1')), isNumber(NaN)) //true true true