ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptの型判定方法の紹介(コード例)

JavaScriptの型判定方法の紹介(コード例)

不言
不言転載
2019-03-18 11:02:002247ブラウズ

この記事ではJavaScriptの型判定方法(コード例)を紹介していますので、参考になると思いますので、困っている方は参考にしていただければ幸いです。

JS のデータ型判定

データ型の判定や、さまざまな複雑な論理判定に対処する必要がある場合がありますが、よく使用されるものから始めましょう。

1.typeof

typeof 演算子は文字列を返し、変数の型を表します。

typeof oper / typeof (operand)

var testString = 'adus',
    testArray = [],
    testBoolean = true,
    testNumber = 0,
    testObject = {},
    testNull = null,
    testUndefined = undefined
    
console.log(typeof testString);//string
console.log(typeof testArray);//object
console.log(typeof testBoolean);//boolean
console.log(typeof testNumber);//number
console.log(typeof testObjec);//object
console.log(typeof testNull);//object
console.log(typeof testUndefined);//undefined

もちろん、上記の基本的なタイプだけでなく、次のタイプもあります:

Symbol (ECMAScript 6 の新機能) "symbol"

Host オブジェクト (JS 環境によって提供される) 実装依存の

Function オブジェクト ([[Call]] は ECMA-262 句で実装されます) "function"

###おい ?何かが間違っています。なぜ配列、null などがすべてオブジェクトなのでしょうか? ? ?

関数型または配列型のインスタンスを見てください。これらは実際にはオブジェクト インスタンスに基づく拡張です。さらにユニークな属性がいくつかあります。


JavaScript の元の実装では、JavaScript の値は型と実際のデータ値を表すタグによって表されていました。オブジェクトのタイプタグは 0 です。

null は null ポインターを表すため (ほとんどのプラットフォームでは値は 0x00)。

したがって、null の型ラベルも 0 になり、typeof null は誤って「object」を返します。 (参考)

2.instanceof

instanceof 演算子は、コンストラクターのプロトタイプ属性がオブジェクトのプロトタイプ チェーンのどこかに現れるかどうかをテストするために使用されます。変数はオブジェクトの特定のインスタンスです。

オブジェクトインスタンスオブコンストラクター

オブジェクト 検出されるオブジェクト/コンストラクターコンストラクター

function fnc(){}
var newFnc = new fnc();
console.log(newFnc.__proto__ == fnc.prototype);//true
console.log( newFnc instanceof fnc ) //true


/*String对象和Date对象都属于Object类型和一些特殊情况*/

var simpleStr = "This is a simple string"; 
var myString  = new String();
var newStr    = new String("String created with constructor");
var myDate    = new Date();
var myObj     = {};
var myNonObj  = Object.create(null);

simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined
myString  instanceof String; // 返回 true
newStr    instanceof String; // 返回 true
myString  instanceof Object; // 返回 true

myObj instanceof Object;    // 返回 true, 尽管原型没有定义
({})  instanceof Object;    // 返回 true, 同上
myNonObj instanceof Object; // 返回 false, 一种创建对象的方法,这种方法创建的对象不是Object的一个实例

myString instanceof Date; //返回 false

myDate instanceof Date;     // 返回 true
myDate instanceof Object;   // 返回 true
myDate instanceof String;   // 返回 false
3.Object.prototype.toString()

各オブジェクトがありますオブジェクトがテキスト値として表される場合、またはオブジェクトが予期される文字列形式で参照される場合に自動的に呼び出される toString() メソッド。デフォルトでは、toString() メソッドはすべての Object オブジェクトによって継承されます。このメソッドがカスタム オブジェクトでオーバーライドされていない場合、toString() は「[オブジェクト タイプ]」を返します。ここで、タイプはオブジェクトのタイプです。

Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

チェック対象のオブジェクトを thisArg という名前の最初のパラメーターとして渡します。

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
適切なシナリオで適切なメソッドを使用すると、心配がなくなり、コードの単純さと堅牢性が保証されます。


以上がJavaScriptの型判定方法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。