関数を宣言すると、そのプロトタイプのコンストラクター プロパティが関数自体を指すようになるため、次のように関数のプロトタイプを上書きするのは悪い習慣ですか?
function LolCat() {
}
// at this point LolCat.prototype.constructor === LolCat
LolCat.prototype = {
hello: function () {
alert('meow!');
}
// other method declarations go here as well
};
// But now LolCat.prototype.constructor no longer points to LolCat function itself
var cat = new LolCat();
cat.hello(); // alerts 'meow!', as expected
cat instanceof LolCat // returns true, as expected
これは私のやり方ではありませんが、私はまだ次のアプローチを好みます
LolCat.prototype.hello = function () { ... }
しかし、私は他の人がこれをしているのをよく見かけます。
最初の例のように、利便性のために関数のプロトタイプ オブジェクトを上書きして、プロトタイプからコンストラクタ参照を削除することによって、何らかの影響や欠点がありますか?