js_javascript スキルで Object、Array、Function などの参照型オブジェクトが等しいかどうかを判断する

WBOY
リリース: 2016-05-16 17:50:20
オリジナル
1029 人が閲覧しました

反復中は、オブジェクトまたは配列内の要素が任意の値である可能性があることにも注意する必要があります。この値は、プリミティブ型の値、オブジェクト、配列に加えて、メソッド、DOM オブジェクト、またはウィンドウ オブジェクトである可能性もあります。一部の参照型は反復できず、分岐判断が必要であることがわかりました。コードは次のとおりです。

コードをコピー コードは次のとおりです。次のように:

function Compare(a,b){
var
pt = /unknown|number|string|boolean/,
fn = /^(functions*) (w *b)/,
cr = "コンストラクター",
cn = "childNodes",
pn = "parentNode",
ce = argument.callee;
if(pt. test( typeof a) || pt.test(typeof b) || a === null || b === null){
return a === b || (isNaN(a) )) ; //便宜上、ここでは NaN == NaN
}
if(a[cr] !== b[cr]){
return false; 🎜>switch( a[cr]){
case Date : {
return a.valueOf() === b.valueOf();
case Function : {
return a.toString ().replace(fn,'$1') === b.toString().replace(fn,'$1'); //ハードコーディングでの関数の宣言方法は、toString の結果に影響します。したがって、通常の書式設定を使用してください。 =0;i< ;a.length;i ){
if(!ce(a[i],b[i])){
return false
}
}
break; ;
};
デフォルト: {
var alen = 0, d;
if(a === b){
return true; >if(a [cn] || a[pn] || b[cn] || b[pn]){
return a === b
}
for(d in a); {
alen ;
}
for(d in b){
blen ;
}
if(alen !== blen){
return false; }
for(d in a){
if(!ce(a[d],b[d])){
return false
}
}
break;
} ;
}
return
}
console.log(compare({},{a:1})); //false
console.log(compare) ({a: 1},{b:2})); //false
console.log(compare({b:2,a:1},{a:1,b:2})) / /true
console.log(compare({a:function(){return false;},b:2},{a:function(){return false;},b:2}));
console .log(compare([],[])); //true
console.log(compare([2,1],[1,2])); //false
コンソール.log(compare (function(){alert(1)},function(){})); //false
console.log(compare(function aaa(){alert(1)},function(){ alert(1) })); //true
console.log(compare(document.getElementsByTagName("a")[0],document.getElementsByTagName("a")[1])); //false 🎜>console.log(compare(document.getElementsByTagName("a")[0],document.getElementsByTagName("a")[0]));
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート