今回は、jQueryのisPlainObject()メソッドの使い方と、jQueryのisPlainObject()メソッドを使用する際の注意点を紹介します。実際のケースを見てみましょう。
説明
jQuery の isPlainObject() 関数は、指定されたパラメーターが純粋なオブジェクトかどうかを判断するために使用され、戻り値はブール型です。
「純粋なオブジェクト」とは、{ }、new Object()、Object.create(null) を通じて作成されたオブジェクトです。
このメソッドの目的は、null、配列、ホスト オブジェクト (ドキュメント)、DOM などの他の JavaScript オブジェクトと区別することです。これらに対して typeof を使用するとオブジェクトが返されるためです。
使用
構文:
$.isPlainObject( object )
パラメータの説明:
object: 判断する必要がある任意の型、任意の値。
$.isPlainObject({}); //true $.isPlainObject(new Object); //true $.isPlainObject(Object.create(null)); //true $.isPlainObject([]); //false $.isPlainObject(document); //false
ソースコード分析
jQuery 3.3.1 バージョンのソースコードを見てみましょう:https://github.com/jquery/jquery/blob/ac9e3016645078e1e42120822cfb2076151c8cbe/src/core .js#L 236
var class2type = {}; //Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。 var getProto = Object.getPrototypeOf; //相当于 Object.prototype.toString var toString = class2type.toString; //hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 //相当于 Object.prototype.hasOwnProperty var hasOwn = class2type.hasOwnProperty; //因为 hasOwn 是一个函数,所以这里调用的是内置对象 Function 的toString() 方法 //相当于 Function.prototype.toString var fnToString = hasOwn.toString; //相当于 Function.prototype.toString.call(Object) //就是Object 构造函数 转字符串的结果 // ObjectFunctionString 其实就是 "function Object() { [native code] }" 这样的一个字符串 var ObjectFunctionString = fnToString.call(Object); function isPlainObject (obj) { var proto, Ctor;
概要
ソースコードから、isPlainObject()メソッドの実装は主に3つの部分に分かれています
1. Objectではない型を削除します
Object.prototype.toStringを使用します。 call() メソッドには、typeof を使用する代わりに、すべての Type が異なる文字列を取得します。これは、typeof が区別できるのは配列などの基本的な型だけであり、typeof は依然として「オブジェクト」文字列を返すためです
var arr = []; var obj = {}; typeof arr; //"object" typeof obj; //"object" typeof document; //"object" Object.prototype.toString.call(arr); //"[object Array]" Object.prototype.toString.call(obj); //"[object Object]" Object.prototype.toString.call(document); //"[object HTMLDocument]"
2。プロトタイプのないオブジェクトは純粋なオブジェクトとみなされます
3. 「{}」メソッドまたは「new Object」メソッドによって作成されたオブジェクトであるかどうかを判断します
これにはコンストラクターを判断する必要があるため、Function.prototype.toString メソッドを使用します
Function オブジェクトは、Object から継承された Object.prototype.toString メソッドからカバーします。
関数の toString メソッドは、関数のソース コードを表す文字列を返します。具体的には、関数キーワード、仮パラメータリスト、中括弧、関数本体の内容が含まれます。
function fn(said){ this.say = said; } Function.prototype.toString.call(fn); //"function fn(said){ // this.say = said; //}" Function.prototype.toString.call(Object); //"function Object() { [native code] }"
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がjQueryのisPlainObject()メソッドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。