[関連する推奨事項: JavaScript ビデオ チュートリアル、Web フロントエンド]
この記事では、基本型の属性メソッドという非常に興味深い概念について説明します。どうですか、少し混乱していますか?ゆっくり教えてください〜
にJava
やC++
などの他のオブジェクト指向プログラミング言語では、属性はオブジェクトの固有の概念であり、基本型は属性メソッドの概念がありません。
はい、これもJavaScript
の悪いアイデアで、そのエンジンを使用すると、プロパティ メソッドを使用してオブジェクトなどの基本的なデータを操作できます。
この奇妙な機能を説明する前に、まず基本型とオブジェクト型の違いを明確にする必要があります。
JavaScript
の基本型の 1 つです。JavaScriptBoolean
Symbol
JavaScript
String
Number
undefined
7
BigInt
null
があります{ }
には、オブジェクト指向で説明する
{ }
JavaScript
、他のタイプのオブジェクトもありますオブジェクトなので、使用の複雑さが軽減されます。
例:
let user = { 名前:「シャオミン」、 こんにちは() { console.log(`こんにちは、${this.name}`); }}user.hello();
オブジェクトuser
の属性とメソッドをオブジェクトにカプセル化するので、メソッドまたは属性を呼び出すためにobj.attr
使用するだけで済みます。
ただし、これを行うと追加のオーバーヘッドが発生します (オブジェクト指向には追加のオーバーヘッドがあります)。オブジェクト指向言語C++
がC
よりも遅いのもこの点です。
基本型をオブジェクトとして使用するときに、調整するのが難しい 2 つの問題があります。
"abc".toUpperCase()
などのオブジェクトを使用する場合と同じであることを望んでいます。JavaScript
上記の問題を非常に「単純な」方法で解決することです。
String
、 Number
、 Boolean
、およびSymbol
型のメソッドとプロパティへのアクセスを許可し、上記のルールの意味は、基本型は依然として基本型であるということですが、基本型のメソッドとプロパティにアクセスしたい場合は、基本型をオブジェクト (オブジェクト ラッパー) にラップします。アクセスが完了したら破棄してください。正直に言うと、それは少しばかげているように思えます。
例
:let name = "Trump";console.log(name.toUpperCase());//基本型にアクセスするメソッド
上記のコードの実行結果は次のとおりです。
大きな問題はないようですが、多くのことが起こったので、次の点を知っておく必要があります。name
name
属性メソッド (次の内容を含むファイル) にアクセスする場合にはname
なことは何もありません。toUpperCase
メソッドがあり、toUpperCase
を呼び出す変数自体の値は変更されません。
この解決策には妥協 (悪いアイデア) がたくさんありますが、結果は依然として良好で、達成された成果は次のとおりです。
これは理論的には真実ですが、実際にはJavaScript
エンジンはこのプロセス用に高度に最適化されており、追加のオブジェクトはまったく作成されないと思われます。彼は、あたかも本当に一時的な目的があるかのように、ルールに従っていると口頭で述べただけです。
この記事では、基本的なタイプのメソッドの概念を簡単に紹介するだけで、さまざまなメソッドについては説明しません。チュートリアルが進むにつれて、徐々に多くのメソッドが含まれるようになります。ここでは、基本的なタイプの一般的に使用されるいくつかのメソッドとプロパティを簡単にリストします。
異なる基本タイプには異なる属性メソッドがあり、それらは次のカテゴリにリストされています。
length
属性、文字列の長さを返します
console.log("abc".length);
上記のコードの結果は次のとおりです。
indexOf(ch)
メソッドは、文字ch
console.log("abc".indexOf('b'));console.log("abc".indexOf('d'));の最初の文字 ch の
添字
を返します。コードの実行結果は次のようになります。
文字列内に文字が存在する場合はインデックス ( 0
から数えたもの) が返され、見つからない場合は-1
が返されます。
concat(str)
メソッド、2 つの文字列を結合します
let str1 = "hello ";let str2 = "world!";console.log(str1.concat(str2));console.log(str1);console.log(str2 );
コードの実行結果は次のとおりです。
replace(str1,str2)
メソッドでは、 str2
使用してstr1
置き換えます
let str = "javascript";console.log(str.replace('java','996'));console.log(str);
コードの実行結果は次のとおりです
。次のように:
toFixed(num)
メソッド、小数点以下を指定された精度に丸めます
console.log(9.3333333.toFixed(3));
コードの実行結果は次のとおりです。
toString()
メソッド、数値を文字列に変換します
3.14.toString();//「3.14」に変換しますconsole.log((8).toString(2));//バイナリ「1000」に変換しますconsole.log((( 9).toString(2));//バイナリ '1001' に変換console.log((996).toString(16));//16 進文字列 '3e4' に変換
コードの実行結果は次のとおりです。
toExponential()
メソッド、指数カウント メソッドに変換
console.log(3.1415926.toExponential());
コードの実行結果は次のとおりです
。次のように:
他の方法については後続の章で説明するので、ここでは詳しく説明しません。
Java Java
同様、 JavaScript
new
演算子を使用して基本型の「オブジェクト ラッパー」を明示的に作成できます。このアプローチは、完全性を理解するためにのみここで説明されています。
たとえば、このアプローチには問題があります。
let num = new Number(0);console.log(typeof num);console.log(typeof 0);
コードの実行結果は次のとおりです。
または、判断に混乱が生じます:
let zero = new Number(0);if (zero) { // ゼロはオブジェクトなので true console.log('true');}
コードの実行結果は次のようになります。以下に続きます:
同時に、 new
(キーワード) のないString/Number/Boolean
関数は、値を対応する型、つまり文字列、数値、またはブール値 (元の型) に変換できることを忘れないでください。
例:
console.log(typeof Number('123'));注:
null
null
undefined
の 2 つの型にはメソッドがありません
null
undefined
JavaScript
では
妥協した実装方法ですが、比較的満足のいく結果が得られ、基本型の属性とメソッド呼び出しを低コストで実現しました。
[関連する推奨事項: JavaScript ビデオ チュートリアル、Web フロントエンド]
上記は、JavaScript が基本型が同じであることを認識する方法です。属性とオブジェクトをオブジェクトとして使用するメソッドの詳細については、ソース コード ネットワーク上の他の関連記事を参照してください。