今回はJavaScriptのオブジェクトについて詳しく説明し、JavaScriptオブジェクトを使用する際の注意点について、実際の事例を交えて見ていきましょう。
1. オブジェクトは参照によって渡され、コピーされることはありません。
var x={};var stooge=x; stooge['a']='aaa';console.log(x.a);//aaa
2. オブジェクトに create メソッドを追加して、コピー効果を実現することで、元のオブジェクトをプロトタイプとして新しいオブジェクトを作成できます。つまり、新しいオブジェクトの値を変更しても、そのオブジェクトのプロトタイプには影響しません。
if(typeof Object.beget!=='function'){Object.create=function(o){var F=function(){}; F.prototype=o;return new F(); } }var another_stooge=Object.create(stooge);
typeof は、オブジェクトのタイプを決定するために使用されます。 (プロトタイプチェーンをチェックします)
hasOwnProperty メソッドはプロトタイプチェーンをチェックしません。
4.for in を使用すると、オブジェクト内のすべてのプロパティ名を走査できますが、関数やプロトタイプ チェーンを含むプロパティも走査されます。この場合、typeof または hasOwnProperty を使用して不要な値を除外できます。 。
var name;for(name in another_stooge){if(typeof another_stooge[name] !=='function'){ console.log(name+':'+another_stooge[name]) } }
しかし、モード内の for 属性が現れる順序は不確かです。
forループはOKです。
配列を使用して変数値を保存し、for ループを使用して走査することをお勧めします。 (ただし、個人的には、オブジェクトにどのようなキー値があるのかわからないので、for in は依然として必要であると感じています。)
var arr=['a','b','c'];for(var i=0;i<arr.length;i++){console.log(arr[i]+':'+another_stooge[arr[i]]); }
5.deleteoperator を使用して、オブジェクトの属性を削除できます。オブジェクトにこの属性が含まれている場合、プロパティは削除され、プロトタイプ チェーン内のどのオブジェクトにも触れなくなります。
オブジェクトのプロパティを削除すると、プロトタイプ チェーン内のプロパティが表示される場合があります。
6. グローバル変数の汚染を減らす。グローバル変数の使用を最小限に抑える 1 つの方法は、アプリケーションに一意のグローバル変数を 1 つだけ作成することです。他の変数または関数をこのグローバル変数の下に配置します。
var MyApp={}; MyApp.stooge={'first-name:'aaa' }; MyApp.flight=function(){}
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨書籍:
以上がJavaScriptオブジェクトの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。