Maison >interface Web >js tutoriel >Comment utiliser la méthode isPlainObject() de jQuery

Comment utiliser la méthode isPlainObject() de jQuery

php中世界最好的语言
php中世界最好的语言original
2018-03-14 16:21:271716parcourir

Cette fois, je vais vous montrer comment utiliser la méthode isPlainObject() de jQuery. Quelles sont les précautions lors de l'utilisation de la méthode isPlainObject() de jQuery. Ce qui suit est un cas pratique, jetons un coup d'œil.

Explication

La fonction isPlainObject() dans jQuery est utilisée pour déterminer si le paramètre spécifié est un objet pur et si la valeur de retour est de type booléen.

Les "objets purs" sont des objets créés via { }, new Object(), Object.create(null).

Le but de cette méthode est de la distinguer des autres objets JavaScript tels que null, tableaux, objets hôtes (documents), DOM, etc., car l'utilisation de typeof sur ceux-ci renverra un objet .

Utiliser

Syntaxe :

$.isPlainObject( object)

Description du paramètre :

object : Toute valeur de tout type qui doit être jugée.

$.isPlainObject({});  //true
$.isPlainObject(new Object);  //true
$.isPlainObject(Object.create(null));  //true
$.isPlainObject([]);  //false
$.isPlainObject(document);  //false

Analyse du code source

Regardons le code source sous la version jQuery 3.3.1 : https://github .com/ jquery/jquery/blob/ac9e3016645078e1e42120822cfb2076151c8cbe/src/core.js#L236

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;

Résumé

À partir du code source, l'implémentation de isPlainObject( ), principalement divisée en trois parties

1. Supprimez le type qui n'est pas Object

utilise la méthode Object.prototype.toString.call(). tous les types, au lieu d'utiliser typeof, car typeof ne peut distinguer que les types de base, tels que les tableaux, typeof renvoie toujours la chaîne "objet"

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. Déterminez si l'objet a un prototype Objets sans prototypes. sont considérés comme des objets purs

3. Déterminez si l'objet est créé via "{}" ou "new Object"

Cela nécessite de juger leur constructeur, utilisez donc la méthode Function.prototype.toString

L'objet Function remplace la méthode Object.prototype.toString héritée de Object.
La méthode toString de la fonction renverra une chaîne représentant le code source de la fonction. Plus précisément, il inclut le mot-clé de fonction, la liste de paramètres formels, les accolades et le contenu du corps de la fonction.

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] }"

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment implémenter la méthode toggle dans jQuery

Comment implémenter jQuery+JSONP inter-domaines

Comment utiliser le composant select dans jquery

Comment obtenir l'effet de connexion de retour chariot jquery

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn