Addy Osmani からJavascript Design Patternsを読んでいます。ドキュメントでは、この単純な割り当てを使用して、 「既存のオブジェクト/名前空間の上書きを防ぎます」 :
var myNS = myNS || function() {};
したがって、変数が既に存在する場合は同じオブジェクトを変数に割り当て、(理想的には) 存在しない場合は空のオブジェクトを作成することを理解しています。したがって、このオブジェクトのプロトタイプにメソッドを追加するとしますが、既存の同様の名前のオブジェクトには、'Hi!' を出力する同様の名前のメソッドが既にありました。次のことが起こるはずですよね?
myNS.prototype.sayHello = function() { return 'Hello!' };
myNS.sayHello(); // Hello! ??
そしてオリジナルmyNS.sayHello() // Hi!
はまだ上書きされていますよね?つまり、この場合の条件付き変数の割り当ては、1 レベルの名前衝突回避を追加することを除いて、何をしますか? それとも私はこれについて完全に間違っていますか?