ホームページ  >  記事  >  ウェブフロントエンド  >  jQueryのisPlainObject()メソッドの使い方

jQueryのisPlainObject()メソッドの使い方

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-14 16:21:271655ブラウズ

今回は、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 で toggle メソッドを実装する方法

jQuery+JSONP クロスドメイン実装の効果

以上がjQueryのisPlainObject()メソッドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。