[解決済み] JavaScriptです。クラス.メソッドとクラス.プロトタイプ.メソッドの比較
2022-03-19 19:31:03
質問
次の2つの宣言の違いは何ですか?
Class.method = function () { /* code */ }
Class.prototype.method = function () { /* code using this.values */ }
1つ目の文はスタティックメソッドの宣言、2つ目の文はインスタンスメソッドの宣言と考えればいいのでしょうか?
どのように解決するのですか?
はい、最初の関数は、そのオブジェクトのインスタンスと何の関係もありません。 コンストラクタ関数 のように考えることができます。 '静的メソッド' .
JavaScriptの関数は ファーストクラス オブジェクトは、他のオブジェクトと同じように扱うことができます。 関数オブジェクト .
2つ目の関数は、コンストラクタ関数のプロトタイプを拡張しているので、この関数は
new
キーワードを使用し、その関数内のコンテキスト(
this
キーワード)は、それを呼び出した実際のオブジェクトのインスタンスを参照します。
この例で考えてみましょう。
// constructor function
function MyClass () {
var privateVariable; // private member only available within the constructor fn
this.privilegedMethod = function () { // it can access private members
//..
};
}
// A 'static method', it's just like a normal function
// it has no relation with any 'MyClass' object instance
MyClass.staticMethod = function () {};
MyClass.prototype.publicMethod = function () {
// the 'this' keyword refers to the object instance
// you can access only 'privileged' and 'public' members
};
var myObj = new MyClass(); // new object instance
myObj.publicMethod();
MyClass.staticMethod();
関連
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み] JavaScriptにおける__proto__ VS. prototype