ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 文字列にプロパティを追加できないのはなぜですか?

JavaScript 文字列にプロパティを追加できないのはなぜですか?

Susan Sarandon
リリース: 2024-10-26 22:14:03
オリジナル
775 人が閲覧しました

Why Can't I Add Properties to a JavaScript String?

JavaScript プリミティブへのプロパティ追加の制限

文字列プリミティブにプロパティを追加できないコードに直面した場合は、次のことを理解することが重要ですJavaScript プリミティブの基本的な性質。 JavaScript には、8 つの異なる型があります: 7 つのプリミティブ型と 1 つの非プリミティブ型:

  • プリミティブ型:

    • 未定義
    • Null
    • Boolean
    • Number
    • BigInt
    • String
    • Symbol
  • 非プリミティブ型:

    • オブジェクト

プリミティブ型に関連付けられた値はプリミティブ値として知られており、プロパティを保持する機能がありません。逆に、オブジェクトの非プリミティブ型の値はオブジェクトと呼ばれ、プロパティを持つことができます。

プロパティの割り当て動作

変数にプロパティを割り当てる場合、次のようになります。次のように:

<code class="js">foo.bar = 'abc';</code>
ログイン後にコピー

結果は foo に割り当てられた値のタイプによって異なります:

  1. 未定義/Null: エラーになります。
  2. オブジェクト: 定義またはfoo オブジェクトの 'bar' という名前のプロパティを更新し、その値を 'abc' に設定します。
  3. その他のタイプ:

    • 厳密モード: TypeError: "割り当てられませんfoo のプロパティ 'bar' に: オブジェクトではありません。
    • ルーズ モード: 操作なし、foo は変更されません。

したがって、プロパティを割り当てることは、

ケース固有: Date プロパティで文字列プリミティブを拡張できません

提供された例では、変数 test には String 型の値が含まれています。したがって、プロパティを追加しようとすると失敗します。

<code class="js">test.test = "test inner";</code>
ログイン後にコピー

グリッドで日付を並べ替える場合の回避策

日付オブジェクトに直接バインドするようにコードを変更することが現実的でない場合は、次の代替ソリューションを検討してください:

  1. moment.js など、日付の並べ替えを処理できるライブラリまたはフレームワークを使用します。
  2. 日付文字列を、日付を保持できるカスタム データ型に変換します。元の日付値を使用し、グリッドの並べ替えプロセスでそのカスタム タイプを使用します。
  3. グリッドのデフォルトの並べ替えメカニズムをオーバーライドして日付文字列を特別に処理し、日付順に並べ替えられるようにします。

以上がJavaScript 文字列にプロパティを追加できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート