Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

Javascriptでの循環参照の例


循環参照は、2つの別々のオブジェクトが相互に参照を渡す場合に発生します。

古いブラウザでは、循環参照がメモリリークの原因でした。ガベージコレクションアルゴリズムが改善され、サイクルと循環依存関係を適切に処理できるようになったため、これは問題ではなくなりました。

ただし、純粋な設計の観点からは、循環参照は依然として悪いことであり、コードの臭いがあります。循環参照は、相互に参照している2つのオブジェクトが緊密に結合されており、一方のオブジェクトを変更すると、もう一方のオブジェクトも変更する必要がある場合があることを意味します。

DogとPersonの2つのオブジェクトがあるとします。犬のオブジェクトを使用するだけで犬の飼い主を参照し、人物のオブジェクトを使用する人のペットを参照できるようにする必要があります。

let dog = new Dog();
let person = new Person();
// Creating a circular reference
dog.owner = person
person.pet = dog

ほとんどのシナリオでは、1つのオブジェクトにのみアクセスし、そこからもう1つのオブジェクトを派生させる必要があります。そのため、リンクの1つを壊すことができます。そうでない場合は、マップを使用して、逆のシナリオでオブジェクトをマップできます。ただし、ハックを使用する代わりに、円形の参照をそこに配置することをお勧めします。


  1. JavaScript unescape()と例

    JavaScriptのunescape()関数は、エンコードされた文字列をデコードするために使用されます。 JavaScriptバージョン1.5では非推奨です。 以下は、unescape()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=

  2. 例を使用したJavaScriptでの継承

    JavaScriptは、プロトタイプに基づくオブジェクトベースの言語です。継承は、プロトタイプオブジェクトを使用してJavaScriptで実装されます。 以下は、JavaScriptで継承を実装するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-sc