問題タブ [class-extensions]

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 投票する
0 に答える
161 参照

objective-c - クラス拡張を使用した非公開アソシエーションの doxygen 目的 cuml アソシエーション

Doxygen バージョン 1.8.3.1-20130209

Doxygen を使用してクラス ダイアグラムなどを生成するのが大好きです。他のクラスを使用する @property 宣言を含むいくつかのクラス拡張を持ついくつかの Objective C に対して実行しただけです。クラス ダイアグラムへの UML 関連としてこれらを取り上げているようには見えません。

Doxygen にこれを見てもらう方法はありますか? 新しいバージョン?

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

objective-c - クラス拡張のプロパティが Objective C のクラスに追加されるのはいつですか?

私は、Objective C のクラス拡張は単なる無名のカテゴリであるという印象を受けました。ただし、これらのクラス拡張にプロパティを追加することはできますが、これはカテゴリでは不可能であるため、少し混乱しています。

クラス拡張機能はどのように実装されていますか? カテゴリーとして?では、なぜ iVar を追加できるのでしょうか? クラス拡張機能がクラスに追加されるのは、コンパイル時またはクラスのロード時ですか?

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

objective-c - クラス拡張でのプロパティの可視性と Objective C での継承

Money と Dollar の 2 つのクラスがあるとします。Dollar は Money から継承されます。

Money には、クラス拡張で宣言されたプロパティがあります。

Dollar はこのプロパティを継承しますが、Dollar のメソッドからは見えません。Dollar.m でプロパティを再宣言することで、「修正」できます。

私はこれが本当に嫌いで、コンパイラが何をしているのかを知っているかどうかさえわかりません:

  1. プロパティを表示するだけですか?
  2. 新しいプロパティと新しい iVar を作成し、前のものを「シャドウイング」していますか?

クラスとそのサブクラスの実装を除いて、すべての人からプロパティを非表示にする最良の方法は何ですか?

理想的には、実装の詳細であるため、.h ファイルに amount を表示したくありません。

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

ios - クラスのプライベート メソッドのクラス拡張の作成

クラスとしてゲームモデルを作成しました。クラス拡張の作成に関するこの質問を確認しました: Objective-C でクラスのプライベート メソッドを定義する最良の方法

私が持っているのは、いくつかの公開メソッドです。これらは、他の VC がアプリで使用できるように公開されています。また、クラスのパブリック メソッドが利用できるいくつかのプライベート メソッドも必要ですが、アプリケーションの残りの部分に対してオープンである必要はありません。

これは、実装ファイルに追加のインターフェイス セクションを追加するクラス拡張によって実現できると考えましたが、これは機能していないようです。

インプファイル:

後で、他のプライベート メソッドの宣言があります。

私が探しているのは、パブリック メソッド (createNewGameAgainst) 内で [self checkIfGameAlreadyExistsAgainst...] などを呼び出す機能です。

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

javascript - バックボーン JS は、継承されたモデル タイプのコレクションに拡張モデルを追加します

私は backboneJS を掘り下げ始めたばかりで、codepen ( http://codepen.io/azaslavsky/pen/fJghE )で小さなテキスト アプリの構築を開始しました。1 つの問題があることを除けば、すべて順調に進んでいます。ユーザーが送信ボタンを押すと、フォーム コンテナー ビューで次のことを実行したいと考えています。

  1. すべてのフォーム フィールドを解析します。これらは、さまざまなモデル タイプ (タイトル フィールド、WYSIWYG テキスト エディターなど) と 1 つのコレクション (tagInput.collection - ユーザーが入力したすべてのタグ) です。
  2. ユーザーがアプリに渡してサーバーに渡すすべてのデータの標準化された JSON オブジェクトを作成します。

現在、Backbone.Model を新しいクラス「FormModel」に拡張しようとしていますが、これにはデフォルトの属性「値」だけが含まれています。次に、コンテナ内のさまざまなモデルをすべて含むメイン コンテナに新しいコレクションを作成します。つまり、container.collection のモデルは FormModel ですが、実際に .add() しようとしているモデルはすべて FormModel の拡張クラスです。これは可能ですか?コレクションにアクセスしようとすると、常に空です! バックボーンを導く根底にあるロジックを理解するための重要な部分が欠けているように感じますが、正確に何を言うことはできません!

(私が思うに)関連するコードを以下に添付します。私の「ミニアプリ」の最新バージョンの完全なコードも上にリンクされています。

0 投票する
0 に答える
1136 参照

java - HashMap を拡張してカスタム remove() を実装する

次のように、クラスを拡張しHashMapてカスタムremove()メソッドを実装しようとしました。

が直接呼び出された場合はすべてうまく機能 remove()しますが、イテレータを使用してエントリを削除すると、上記のオーバーライドされたメソッドの代わりに のremove()メソッドが呼び出されます。HashMapremove()

エントリ イテレータのソース コードを見ると、次のように表示されます。HashMap

拡張HashMapクラスはすべてのプライベート フィールドにアクセスできるわけではないため、イテレータを変更するだけではいけません。独自のイテレータがそのイテレータをオーバーライドするようにするには、多くのコードを書き直す必要があります。

remove()呼び出されたすべての状況で呼び出されるように完全にオーバーライドする方法はありますHashMap.remove()か?