JSで‘hello’とnew String(‘hello’)が引き出す問題の詳細


文字列を定義
仕事の中で私達は大体3つの方法で文字列を定義します。
1.var str='hello'
2.var str 1=String('hello')
3.var str 2=new String('hello')
(以下、直接に上記の3つの変数を持ちます。)
この3つの方法で定義された「hello」には、例えばlenghなどの独自の属性があり、自分なりの方法があります。例えば、indexOf()は、日常の仕事の定義においても何の違いも感じられません。
それは深く入り込んだことがありますか?
1.この3つの方法で定義されている「ハロー」は同じですか?
2.なぜ基本タイプは直接にその対応方法を呼び出すことができるのですか?
この3つの方法で定義されている「ハロー」は同じですか?

console.log(str === str1) //true
console.log(str === str2) //false
console.log(str1 === str2) //false
最後の方法で定義されたのは上記の2つの方法で定義されたのと同じではないことが分かります。
???
まず私たちは一つのことを知っています。
newはきっと対象が出てきます。
したがって、それぞれ3つのタイプを打ち出します。

console.log(typeof str) //string
console.log(typeof str1) // string
console.log(typeof str2) //object
だから、これはなぜ厳密には同じではないですか?
データタイプとスタックの関係を引き出す
原因を深く理解しようとする:
String,Number,BooleanはJSでは基本的なタイプであり,基本的なタイプはスタックメモリに記憶されており,データサイズは確定しており,メモリの空間サイズは割り当てられます。
引用のタイプはヒープメモリに記憶されています。例えば対象はスタックの中にあるのは一つのヒープの指針だけです。つまり私たちが日常的に会っているa={num:1}b=a、b.num 1=2です。a.num 1も2の原因です。a,bは同じアドレスを同時に指すからです。
前の2つの方法で定義されたのはスタックで値が等しく、第3の方法で定義されたのはスタックの中の1つのポインタだけである。
だからこれもなぜ3つの方法が定義されているのかが違っています。
なぜ基本タイプは直接にその対応方法を呼び出すことができるのですか?
試行:

console.log(str.length) // 5
str.say = 'world'
console.log(str.say) //undefined

 console.log(str1.lengh) // 5
str1.say = 'world'
console.log(str1.say) //undefined

console.log(str2.lengh) // 5
str2.say = 'world'
console.log(str.say) //world
包装対象とオリジナル資料の種類を引き出す
私達は第一の方式と第二の方式がlengh属性にアクセスできることを発見しました。
なぜ私たちは属性をカスタマイズして訪問できないのですか?
数字、文字列、ブールの3つは、JSでは元の資料タイプと呼ばれていますが、new String()、new Number()は包装対象です。
包装の対象も対象です。
これはつまりなぜ私達は三つのタイプをプリントしますか?string(元の資料タイプ)、string(元の資料タイプ)、object(包装対象)です。
newから出てきたstr 2の対象はStringの一連の方法があると理解できます。

console.log(str2.indexOf === String.prototype.indexOf) // true
第二の方法を試してみます。同じtrueがありますか?

console.log(str.indexOf === String.prototype.indexOf) //true
console.log(str1.indexOf === String.prototype.indexOf) //true
しかし、

str instanceof String // false
str1 instanceof String // false
strはStringではないのにStringを持つ方法がありますか?
なぜなら、
これはJSの中のデザインです。
これはJSの中のデザインです。
これはJSの中のデザインです。
原始資料の種類の方法と属性は「借り」です。
オリジナルの資料タイプの値は、オブジェクトのような属性や方法がありません。
元の資料タイプは、演算に使う属性と方法は、包装対象に「借り」するもので、
オリジナルの資料タイプはnew String()またはnew Number()にすべてを借りることができる方法です。しかし、自分自身には属性と方法がない。
したがって、これはなぜ最初の2番目のタイプの属性をカスタマイズすることができませんが、対応するタイプの方法を使用することができます。
まとめ:
1.第一と第二の方法で定義されているのは元の資料の種類です。
またスタックに保存し、
包装対象(new.()).
2.3番目は包装対象で、
スタックの中にポインターを格納し、
ストック内容。
だからこれも一連が正常ではないようですが、正常なことが起こる原因です。
はははははははははは。
もちろんまだたくさんのものがあります。スタックに関わる以上、
そこで、スタックとは何かを確認しなければなりません。
何か違いがありますか?
はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。