ウェブフロントエンド戦闘へのエントリは、ターゲット・オブジェクトが空であるか否かを判断JS、プロパティは、対象か否かを判断します

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/wewfdf/article/details/102691669

JSは、ターゲット・オブジェクトが空であるか否かを判断しました

ターゲット・オブジェクトが空であるかどうかを決定する、決意法の三種類は、本明細書に提示されます。

1、のための...で...プロパティを横断思考の最も一般的な方法は、真の「非空の配列が」あったように、そうでない場合は、「空の配列」

function judgeObj(Obj){
    for(var attr in Obj){
        return alert('非空对象')
    }
    return alert('空对象')
}

JSONによって判断2. .stringify方法を付属しています。

if(JSON.stringify(Obj) == '{}'){
    console.log('空对象');
}

3.ES6新しい方法Object.keys():

if(Object.keys(Obj).length > 0){//会转化一个数组
    console.log('非空对象');
}

オブジェクト属性の1つは、JavaScriptを決定するかどうか

さまざまな方法で使用する略式判決オブジェクトの属性、異なるシナリオの一般的な方法はあります。

ドット(。)または括弧([])

プロパティ値は、属性がオブジェクトに存在しない場合、未定義戻され、物点またはブラケットによって取得してもよいです。もちろん、「不在」は、プロトタイプは、プロトタイプチェーンの属性値が返された場合は、プロトタイプチェーンに存在するオブジェクト自身とないが、チェーンは性質を有することを意味します。

// 创建对象
let test = {name : 'lei'}
// 获取对象的自身的属性
test.name            //"lei"
test["name"]         //"lei"

// 获取不存在的属性
test.age             //undefined

// 获取原型上的属性
test["toString"]     //toString() { [native code] }

// 新增一个值为undefined的属性
test.un = undefined

test.un              //undefined    不能用在属性值存在,但可能为 undefined的场景

したがって、我々はXプロパティが存在してobjかどうかを判断するために未定義の戻り値をobj.xことができるかどうかによって異なります。この方法は非常に簡単です、それは、制限がある:あなたはxの属性値の存在下で使用することはできませんが、未定義のシーンかもしれません。オペレータは、この問題を解決することができます

あなたと学習方法のいくつかを共有するために、六年目のプログラミング、戦闘開発が細部に注意を払う必要があります。767-273-102秋のドレス。ゼロベースのフロントエンドから起動する方法を学習します。前任者は誇らしげにプログラミングの世界に転送する方法を確認するには!常に私は、Webフロントエンドを学びたいと思っていたが、最新のチュートリアルや学習方法(ルートを学習するためのWebフロントエンドシステム、詳細なフロントエンドプロジェクトの戦闘教育ビデオ)で更新、または変更するジョブ、または大学生だけでなく、仕事のスキルをアップグレードしたいです、小さなパートナーを検討しているの参加を歓迎します。私たちは一緒に歩いていく先端の先端

オペレータで二、

オペレータに指定されたオブジェクトまたはプロトタイプチェーンの指定されたプロパティがtrueを返す場合。

// 创建对象
let test = {name : 'lei'}

'name' in test        //true

'un' in test             //true

'toString' in test    //true

'age' in test           //false

実施例に見られるように、定義されていない属性値が正常と判定してもよいです。このアプローチの限界は、自分の財産は適用されません。このように存在するかを決定する必要があるときに、プロパティは、自身とプロトタイプチェーンを区別することができないということです。そして、hasOwnPropertyを()が必要です

三、hasOwnPropertyを()

test.hasOwnProperty('name')        //true   自身属性
test.hasOwnProperty('age')           //false  不存在
test.hasOwnProperty('toString')    //false  原型链上属性

プロパティ自体の存在は、trueを返す場合にのみ見ることができます。自分の属性のシーンにのみ適用分析します。

概要

3つの方法は異なる方法で長所と短所、さまざまなシナリオを持って、時には、このような自分の財産を横断するように、組み合わせの使用を必要とし、彼らは···で使用するために入れます···とhasOwnPropertyを()を組み合わせました。

おすすめ

転載: blog.csdn.net/wewfdf/article/details/102691669
おすすめ