問題タブ [defineproperty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1478 参照

javascript - プロトタイプからプロパティを再定義するにはどうすればよいですか?

pオブジェクトのプロトタイプからプロパティを削除するにはどうすればよいですか?

これによりTypeError: Cannot redefine property: p が生成されます。プロパティを削除して再度追加する方法はありますか? またはconfigurable、プロパティが作成された後に属性を設定することは可能ですか?

0 投票する
1 に答える
1156 参照

javascript - Object.defineProperty で定義されたプロパティの Javascript 継承

私は次の親クラスを持っています...

および対応する子クラス:

Child.prototype = Object.create(Parent.prototype);のようなものを追加して、継承を適用​​しようとしました 。 、しかし、これは明らかに機能しません。

プロパティIDと名前を使用できるように、親クラスから継承するにはどうすればよいですか。

0 投票する
1 に答える
1848 参照

javascript - 配列を返す Object.defineProperty で .push() を再定義する

Object.defineProperty次のような配列を返すコンストラクター関数のプロトタイプを呼び出して作成されたオブジェクトにプロパティがあるとします。

.push()派生barプロパティの呼び出しをキャプチャしてオーバーライドするにはどうすればよいですか?

0 投票する
3 に答える
1193 参照

javascript - jQuery の使用時に object.prototype を拡張するための代替方法

しばらく前に拡張しようとしましたObject.prototype...後でコンソールにjQueryファイルからのエラーが表示されたときは驚きました。私は何が間違っているのかを理解しようとしましたが、もちろん、拡張Object.prototypeは「悪」であるという情報、「JS は動的言語であり、コードがすぐに機能しないため、それを行うべきではありません」という情報と、jQuery がhasOwnPropertyメソッドを追加するという情報を見つけました。彼らのfor inループに。

私は jQuery を離れたくなかったので、拡張についての考えを捨てましたObject.prototype

今まで。私のプロジェクトは大きくなり、コードのいくつかの部分を何度も繰り返さなければならないので、本当にイライラしています。以下は、私のプロジェクトで使用している構造の一部です。

charts.js:

ダッシュボード.js

前述したように、プロジェクトは現在非常に大きくなっています。40 以上の js ファイルがあり、そのうちのいくつかには数千行のコードが含まれています。&&_initを繰り返さなければならない多くの機能と同様に、セクションを毎回繰り返さなければならないのは本当に面倒です。$(document).ready$(window).load

私は自分の問題の別の解決策を見つけようとしました。initプロパティを使用してクラスを作成しようとしましたが(詳細はこちらで確認できます)、このソリューションにより、すべてのファイルに別の「不要な」コードを追加する必要があり、他のファイルオブジェクトプロパティへのアクセスも複雑になります(どこでも適切なオブジェクトを返すなど) )。コメントでアドバイスされているように、JS のゲッターとセッターについて読み始めました。

結局、私はそのようなものを作成しました:

と私のオブジェクト:

このソリューションは jQuery で動作するようです。しかし、安全に使用できますか?コードが引き起こす可能性のある問題は見られず、コードが引き起こす可能性のあるその他の問題も見当たりません。このソリューションを使用すべきではない理由を誰かが教えてくれたら、本当にうれしいです。

また、それがどのように機能するかを詳細に理解しようとしています。理論的には、値を割り当てずにObject.prototypebyのプロパティを定義しました。definePropertyどういうわけか、jQueryfore inループでエラーが発生しないのはなぜですか? _initそれは、私がプロパティのゲッターのみを定義しているため、プロパティがある時点またはまったく定義されていないことを意味しますか?

どんな助けでも大歓迎です:)