[解決済み】JavaScriptの'a'['toUpperCase']()はどのように、そしてなぜ動作するのでしょうか?
2022-04-10 13:52:59
質問
JavaScriptは私を驚かせ続けてくれますが、今回もその一例です。私はあるコードに出くわしましたが、最初は理解できませんでした。そこで、私はそれをデバッグし、この発見に至りました。
alert('a'['toUpperCase']()); //alerts 'A'
さて、これはもし
toUpperCase()
は文字列型のメンバとして定義されていますが、最初は意味が分かりませんでした。
とにかく
-
は、次のように動作します。
toUpperCase
は 'a' のメンバーですか?それとも裏で何かが起こっているのでしょうか? -
その コード 私が読んでいたのは、以下のような機能です。
function callMethod(method) { return function (obj) { return obj[method](); //**how can I be sure method will always be a member of obj** } } var caps2 = map(['a', 'b', 'c'], callMethod('toUpperCase')); // ['A','B','C'] // ignoring details of map() function which essentially calls methods on every // element of the array and forms another array of result and returns it
を呼び出す汎用的な関数です。 ANY メソッドを ANY オブジェクトを作成します。しかし、指定されたメソッドはすでに指定されたオブジェクトの暗黙のメンバになるということでしょうか?
私は、JavaScriptの関数の基本的な概念について、重大な理解が欠けていると確信しています。このことを理解するために私を助けてください。
どのように解決するのですか?
分解してみること。
-
.toUpperCase()
のメソッドです。String.prototype
-
'a'
はプリミティブな値ですが、その オブジェクト表現 - オブジェクトのプロパティ/メソッドにアクセスするために、ドット表記とブラケット表記の2つの表記があります。
そこで
'a'['toUpperCase'];
を経由したアクセスです。
ブラケット表記
プロパティに
toUpperCase
から
String.prototype
. このプロパティは
メソッド
を追加することで呼び出すことができます。
()
'a'['toUpperCase']();
関連
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] テスト
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み] JavaScriptのプロパティアクセス:ドット記法とブラケット?