jsではどのように変数のタイプを正確に判断しますか?
JS基礎変数タイプ
JSには6つの基本データタイプと複雑なデータタイプがあります.基本データタイプはundefined、Null、Boolean、Number、String、es 6の中にSymbolがあります.複雑なデータの種類は、Aray、Function、dateなどです.
typeof判定変数タイプ
typeof演算子は、オブジェクトの種類を判断するために使用されますが、作成したオブジェクトのいくつかについては、Objectに戻ります.
instance ofチェック
ECMAScriptは他のJava演算子instance ofを導入してこの問題を解決します.instance of演算子は、処理中のオブジェクトの種類を識別するために、typeof演算子と似ています.instance of演算子は、もう一つのオブジェクトを検出するためのプロトタイプ属性があるかどうかを判断するために使用されます.
Object.prototype.toString.callを使用します.
定義:まず、オブジェクトの内部属性を取得し、この属性に基づいて、結果として「object Aray」に似た文字列を返します.(ECMA規格を見たことがあるなら全部知っています.[]]は言語内部で使用され、外部から直接アクセスできない属性を表します.「内部属性」といいます.).
JSには6つの基本データタイプと複雑なデータタイプがあります.基本データタイプはundefined、Null、Boolean、Number、String、es 6の中にSymbolがあります.複雑なデータの種類は、Aray、Function、dateなどです.
typeof判定変数タイプ
typeof演算子は、オブジェクトの種類を判断するために使用されますが、作成したオブジェクトのいくつかについては、Objectに戻ります.
instance ofチェック
ECMAScriptは他のJava演算子instance ofを導入してこの問題を解決します.instance of演算子は、処理中のオブジェクトの種類を識別するために、typeof演算子と似ています.instance of演算子は、もう一つのオブジェクトを検出するためのプロトタイプ属性があるかどうかを判断するために使用されます.
Object.prototype.toString.callを使用します.
定義:まず、オブジェクトの内部属性を取得し、この属性に基づいて、結果として「object Aray」に似た文字列を返します.(ECMA規格を見たことがあるなら全部知っています.[]]は言語内部で使用され、外部から直接アクセスできない属性を表します.「内部属性」といいます.).
var results = []
for (let i in allVarMap) {
results.push(Object.prototype.toString.call(allVarMap[i]))
}
console.log(results.join())
// [object Number],[object Number],[object Number],[object String],[object Boolean],[object Array],[object Object],[object Function],[object Function],[object Undefined],[object Null],[object Date],[object RegExp],[object Error]
getValType関数を実現するには、上記の分析に基づいて、まずtypeOf関数で基礎タイプnumber、string、function、bootlean、undefinedを判断します.そして結果がobjectなら、Object.prototype.tostring.callで具体的なタイプを判断します.var getVarType = function (val = 0) {
var type = typeof val
// object Object.prototype.toString.call
if (type === 'object') {
var typeStr = Object.prototype.toString.call(val)
// [object String]
typeStr = typeStr.split(' ')[1]
type = typeStr.substring(0, typeStr.length - 1)
}
return type
}
var results = []
for (let i in allVarMap) {
results.push(getVarType(allVarMap[i]))
}
console.log(results.join())
// number,number,number,string,boolean,Array,Object,function,function,number,Null,Date,RegExp,Error
まとめ1.typeOfは一つの変数のタイプを判断できますが、number、string、function、bootlean、undefined、nullと他のオブジェクトタイプが戻ってきた結果はすべてobject.2.instancofであり、一つのオブジェクトが別のプロジェクトのインスタンスであるかどうかを判断できます.