Heim > Artikel > Web-Frontend > Einfache Methode, um festzustellen, ob ein JavaScript-Objekt null ist oder das Attribut empty_javascript skills ist
Lassen Sie uns zunächst über den Unterschied zwischen null und undefiniert sprechen:
Das Ausführen von typeof für deklarierte, aber nicht initialisierte und nicht deklarierte Variablen gibt „undefiniert“ zurück.
null stellt einen Nullobjektzeiger dar und der Operationstyp gibt „Objekt“ zurück.
Im Allgemeinen wird der Wert einer Variablen nicht explizit auf undefiniert gesetzt. Im Gegenteil: Bei einer Variablen, die ein Objekt speichert, sollte der Variablen explizit erlaubt werden, den Nullwert zu speichern.
var bj; alert(bj); //"undefined" bj = null; alert(typeof bj); //"object" alert(bj == null); //true bj = {}; alert(bj == null); //false
Die folgenden zwei Funktionen wurden mir von Senior Brother Deng übertragen, vielen Dank.
/* * 检测对象是否是空对象(不包含任何可读属性)。 * 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。 */ function isEmpty(obj) { for (var name in obj) { return false; } return true; };
Das hier erwähnte leere Objekt ist {} oder null. Ich habe einen Testfall geschrieben.
var a = {}; a.name = 'realwall'; console.log(isEmpty(a)); //false console.log(isEmpty({})); //true console.log(isEmpty(null)); //true //注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句 ? /* * 检测对象是否是空对象(不包含任何可读属性)。 * 方法只既检测对象本身的属性,不检测从原型继承的属性。 */ function isOwnEmpty(obj) { for(var name in obj) { if(obj.hasOwnProperty(name)) { return false; } } return true; };
{} und null:
Diese Sache ist sehr wichtig.
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。 b = a; b.name = 'jim'; //此时 a 和 b 指向同一个对象。a.name, b.name 均为'jam'