まず次のようなテスト コードをいくつか見て、そこからどのような問題が見つかるかを見てみましょう:
var str=”likeke”;
str;//”likeke”
str.length;//6
str .age=22 ;
str.age;//未定義;
var mystr=new String("likeke");
mystr;//String {0: "l", 1: "i", 2: "k"、3: "e"、4: "k"、5: "e"、長さ: 6、[[PrimitiveValue]]: "likeke"}
mystr.length;//6
mystr .age=22 ;
mystr.age;//22
最初の質問: なぜ基本型の文字列は長さ属性にアクセスできるのですか?
2 番目の質問: 文字列のラッパー型はカスタム属性にアクセスできますが、基本型はなぜ文字列にアクセスできないのでしょうか?
理由: 1. オブジェクトの形式で基本タイプの文字列属性にアクセスするか、その属性に新しい属性を作成すると、JS エンジンはそれを対応するパッケージ化タイプのオブジェクトに変換します
2. self を追加するとき- プロパティを定義した後、一時オブジェクトはすぐに破棄されます。したがって、このプロパティに再度アクセスすると (ラッピング型に再度変換されます)、 undefind として表示されます。
文字列に加えて、他の基本型にも同様の原則があります (例: (666).toString().length;//3