geta1972TweetPocketCheckまたもや仕様のご認識をしていて、トラブってしまいました。javascriptのnew演算子で対応するライブラリを作っていた時に、想定した動きをしないな〜とバグを探していた時に、どうやらインスタンス化したローカル変数が、別のnew宣言をした値で上書きされているという事を見つけ、どうやらコンストラクタの使い方が間違っているということを理解することができました。以前まではnew宣言を使わない階層型の関数による書き方をしていたのですが、クロージャー思考が魅力で使いやすかったためにnew宣言方式に自作したライブラリを書き換えていたのですが、そうした時に有る時突然気がついたという次第です。new宣言しているのに上書き??そもそも、javascriptのクロージャーはnew宣言を使ったやり方でthisを引っ張り回すやり方が色々なサイトで記述されているのですが、以下のようなケースで不具合を発生させてしまいました。bb/bb/bb成功パターンも失敗パターンもどちらも同じソースなんですが、実行タイミング(結果表示)が違うところがポイントです。失敗パターンの、全てのコンストラクタをインスタンス化した最後にすべての値を参照してみると、最後の値で上書きされているという状況です。成功パターンも成功ではなくて実は失敗しているんですけどね。~~”の箇所を定義してその中の値はグローバルコンストラクタとして書き換えられてしまうようです。分かりにくいのでわかりやすく言うと、”func.prototype.value”を変数として書き換えるのであれば、問題ないのですが、その内容データはクロージャー変数ではなく、既存の定義データとして存在するために上書きという処理になってしまうようです。--/aa/bbローカル変数の代入の際に、プロトタイプの親に当たる変数をクリア(その場で宣言)することで解決しました。{};”もっとわかりやすく考えると、ローカル変数は、事前に記載しておかずに、宣言の際に代入することでトラブルを無くせそうです。した基本概念を知らずにライブラリを作っていたことを考えると怖くて仕方が有りません。変数の上書きに引っかかる使い方が無かっただけで、バグが含まれている状態でしたね・・・おーこわ!これまで作ったライブラリを見直さないと気が済まなくなってきました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。