12.コアJavaScriptノート:日付とその他の内蔵対象
6806 ワード
本シリーズはZouStrongにて整理収録されています.
「JavaScript権威ガイド(第六版)」から整理し、「JavaScript高級プログラム設計(第三版)」
一.日付オブジェクト
DateタイプはUTC(国際協調時間)を使い、1970年1月1日0時から経過したミリ秒数で保存します.
注:1970年1月1日前後28万年以上の時間を保存できます.
中国には8つのタイムゾーンがありますので、1970年1月1日8時からのミリ秒数で時間を保存しますが、通常は最終的に計算された時間の差ですので、大丈夫です.
1.日付オブジェクトの作成
日付オブジェクトを作成するには、newオペレータとDateアーキテクチャ関数を使用すればいいです.
パラメータを使用しない場合、現在の日付と時刻を持つオブジェクトを作成します.
Date.parse()
この方法は日付を表す文字列を受信し、対応するミリ秒値を返します.1970年1月1日0時からその日付までのミリ秒数です.中国は8時からです.
日付文字列のパラメータを直接伝えることができますが、変換されたか、最終的に受信されたか、それともミリ秒の値かを覚えてください.
Date.UTC()
この方法は、同じように日付を表す値を受信し(文字列ではない)、対応するミリ秒の値を返しますが、許容パラメータの状況が異なります.
彼のパラメータはそれぞれ——年で、0の月、日に基づいて、0の時、分、秒、ミリ秒に基づいています.
上記の日付を表すパラメータを直接Date構造関数に渡すと、バックグラウンドでDate.UTC()を呼び出すこともありますが、この場合はローカルタイムゾーンに基づいて作成されますので、8つのタイムゾーンを追加する必要はありません.
Date.now()
ECMAScript 5は、Date.now()方法を追加し、この方法を実行する時の現在の日付のミリ秒値を返します.
すべてのオブジェクトは継承されたtoString()、toLocaleString()、およびvalueOf()の方法を持っていますが、書き換えました.
valueOf()方法
日付のミリ秒を返します.
だからこそ、日付値を比較しやすくなります.対象を比較する時に呼び出します.valueOf()方法
特定のフォーマットの年月日に戻ります.ブラウザだけですので、実用的な使い方はありません.
getTime()メソッド
日付のミリ秒値を返します.(valueOf()方法と同じです.
setTime()メソッド
日付をミリ秒で設定する(日付全体を変更する)
get FulYear()メソッド
4桁の年を取得
set FulYearメソッド
四桁の年を設定します.
get Month()方法
獲得月(0~11、1から12月まで)
set Month()方法
月(0~11、1~12月、11を超える年)を設定します.
get Date()方法
取得日数(1~31は、1から31まで)
set Date()メソッド
設置日数(1~31は、1~31日までで、当月の日数を超えると、月が増える)
get Day()方法
日曜日から土曜日まで、外国人は日曜日を一週間の第一日とします.
注:setDay()の方法はありません.曜日は年月日で決まります.
get Hoursの方法
獲得時間(0~23)
セットHoursの方法
設定時間(0~23、23を超えると日数が増加します)
get Minutes()方法
獲得分(0~59)
set Minutes()方法
設定分(0~59,59を超えると時間が増加します)
get Seconds()の方法
秒数(0~59)を取得します.
set Seconds()の方法
秒数を設定する(0~59、59を超えると分が増加する)
get Milliseconds()方法
ミリ秒を取得
set Milliseconds()の方法
ミリ秒を設定
二.他の内蔵オブジェクト
ECMA-622は、内蔵オブジェクトの定義について、「ECMAScriptによって提供される、宿主環境に依存しないオブジェクトは、ECMAScriptプログラムが実行される前から存在しています.」つまり、内蔵オブジェクトを明示的に実例化する必要はない.前に、Object、Aray、Stringなど、多くの内蔵オブジェクトを紹介しました.
ECMA-622はまた、2つの単体内蔵オブジェクト:MathとGlobalを定義しています.
一.Mathオブジェクト
Mathオブジェクトは、数学計算のための属性と方法を提供します.
Math.E属性
自然対数の基数、すなわちeの値
Math.PI属性
πの値
Math.SQRT 2プロパティ
2の平方根
Math.max()方法
任意の複数のデジタルパラメータを受信し、最大値を返します.
Math.min()方法
任意の複数のデジタルパラメータを受信し、最小値を返します.
テクニック:上の方法で配列の最大値を見つけます.
一番近い整数を上(大)に丸めます.
Math.florメソッド
下(小)に丸めた整数が一番近い整数です.
Math.round()方法
四捨五入は最も近い整数である.
Math.random()方法
0以上を返しますが、1未満の乱数を返します.
Math.abs()方法
絶対値を返します
Math.pow(x,y)方法
xのy乗を返します
Math.sqrt()方法
平方根を返します
立方根を返すためのMath.pow(x,1/3)
二.Globalオブジェクト
GlobalオブジェクトはECMAScriptの中で最も特別なオブジェクトです.どの角度から見てもこのオブジェクトは存在しません.Globalオブジェクトはある意味究極の「ポケットオブジェクト」として定義されています.言い換えれば、他のオブジェクトに属さない属性と方法は、最終的にはその属性と方法である.
実際には、グローバル変数やグローバル関数がありません.すべてのグローバルスコープで定義されている属性と関数は、Globalオブジェクトの属性であり、ウェブブラウザでは、WindowsオブジェクトはGlobalオブジェクトの役割を果たしています.
エンコーディング()方法
エンコーディング方法
URIまたは他のテキストをエンコードし(文字列形式)、コピーを返します.一部の文字は16進数の変換シーケンスに置き換えられます.
encodeURI()は主に全体URI(例えばhttp://www.wrox.com/illegal value)に用いられる.
encodeURIComponentは主にURIの中のある一節(例えば前のURIの中のillegal value.httm)に用いられます.
エンカウント()は、自身がURIに属する特殊な文字を符号化しません.例えば、コロン、正のスラッシュ、疑問符、井戸のサイズなどです.encodeURIComponentはその発見した任意の非標準文字をエンコードします.
decodeURI()方法
decodeURIComponentメソッド
上記の方法を用いて符号化された文字列をそれぞれ復号する(すなわち逆方向動作)
注:escape()とunescape()の方法はECMA 3では廃棄されます.上記の方法で代替します.
eval()方法
eval()方法はまるでECMAScript解析器のようです.一つのパラメータ、すなわち実行するJavaScript文字列しか受け入れられません.
注:eval()に作成された任意の変数や関数は、プリコンパイルの場合は、文字列に含まれていますので、アップグレードされません.それらはeval()が実行する時のみ作成されます.
注:コード文字列を説明できる能力は非常に強いですが、非常に危険です.したがって、eval()を使用する場合は、特にユーザ入力データを実行する場合には極めて慎重でなければならない.そうでないと、悪意のあるユーザーがあなたのサイトやアプリケーションのセキュリティを脅かすコードを入力する可能性があります(いわゆるコード注入).
Globalオブジェクトの属性
特殊な値はundefined、NaN、InfinityともにGlobalオブジェクトの属性です.
また、すべての原生引用タイプの構造関数は、Globalオブジェクトの属性:Object、Aray、Function、Boolean、String、Numberである.
「JavaScript権威ガイド(第六版)」から整理し、「JavaScript高級プログラム設計(第三版)」
一.日付オブジェクト
DateタイプはUTC(国際協調時間)を使い、1970年1月1日0時から経過したミリ秒数で保存します.
注:1970年1月1日前後28万年以上の時間を保存できます.
中国には8つのタイムゾーンがありますので、1970年1月1日8時からのミリ秒数で時間を保存しますが、通常は最終的に計算された時間の差ですので、大丈夫です.
1.日付オブジェクトの作成
日付オブジェクトを作成するには、newオペレータとDateアーキテクチャ関数を使用すればいいです.
パラメータを使用しない場合、現在の日付と時刻を持つオブジェクトを作成します.
var now = new Date(); // Thu Jul 10 2014 11:17:20 GMT+0800 ( )
特定の日付と時間に基づいてオブジェクトを作成するには、その日付を示すミリ秒数(つまり1970年1月1日0時からその日付までのミリ秒数、中国は8時から)が必要です.var now = new Date(1000); // Thu Jan 01 1970 08:00:01 GMT+0800 ( )
ただし、手動でミリ秒の値を計算するのは面倒くさいので、具体的な日付時間をミリ秒の値に変換して、Dateコンストラクターに渡す方法を二つ提供します.Date.parse()
この方法は日付を表す文字列を受信し、対応するミリ秒値を返します.1970年1月1日0時からその日付までのミリ秒数です.中国は8時からです.
var someDate = new Date(Date.parse("07/10/2004"));
上記の日付を表す文字列を直接Dateコンストラクタに渡すと、バックグラウンドでDate.parseを呼び出すこともできます.日付文字列のパラメータを直接伝えることができますが、変換されたか、最終的に受信されたか、それともミリ秒の値かを覚えてください.
Date.UTC()
この方法は、同じように日付を表す値を受信し(文字列ではない)、対応するミリ秒の値を返しますが、許容パラメータの状況が異なります.
彼のパラメータはそれぞれ——年で、0の月、日に基づいて、0の時、分、秒、ミリ秒に基づいています.
var someDate = new Date(Date.UTC(2014,07,10,08,13,56,10));
//Sun Aug 10 2014 16:13:56 GMT+0800 ( )
//Thu Jul 10 2014 16:13:56 GMT+0800 ( ) ---- 8
注:年と月だけが必要で、日数が提供されていない場合は、1となります.その他はすべて0となります.上記の日付を表すパラメータを直接Date構造関数に渡すと、バックグラウンドでDate.UTC()を呼び出すこともありますが、この場合はローカルタイムゾーンに基づいて作成されますので、8つのタイムゾーンを追加する必要はありません.
var someDate = new Date(2014 , 06 , 10 , 08 , 13 , 56 , 10);
//Thu Jul 10 2014 08:13:56 GMT+0800 ( )
注:最後に覚えておきたいのですが、このような二つの方法が存在していることを知っていればいいです.実際に使っているうちに、直接に日付パラメータを伝達すればいいです.Date.now()
ECMAScript 5は、Date.now()方法を追加し、この方法を実行する時の現在の日付のミリ秒値を返します.
var start = Date.now(); //
doSomething(); //
var stop = Date.now(); //
var result = stop –start; //
IE 8及び以下はサポートされていませんが、+演算子を使用して日付オブジェクトをミリ秒の値に変換しても、同じ目的を達成することができます.またはNumber()関数、.valueOf()方法、.getTime()方法を使用しても良いです.var start = +new Date(); //
doSomething(); //
var stop = +new Date(); //
2.日付オブジェクトの方法すべてのオブジェクトは継承されたtoString()、toLocaleString()、およびvalueOf()の方法を持っていますが、書き換えました.
valueOf()方法
日付のミリ秒を返します.
だからこそ、日付値を比較しやすくなります.対象を比較する時に呼び出します.valueOf()方法
var date1 = new Date(2007, 0, 1); //"January 1, 2007"
var date2 = new Date(2007, 1, 1); //"February 1, 2007"
alert(date1 < date2); //true
toStering()方法、toLocalle String()方法、toDateString()方法、toLocalle DateString()方法、toTimeString()方法、toLocalle TimeString()方法、toUTCString()方法(toGMT String()方法の代替者)特定のフォーマットの年月日に戻ります.ブラウザだけですので、実用的な使い方はありません.
getTime()メソッド
日付のミリ秒値を返します.(valueOf()方法と同じです.
setTime()メソッド
日付をミリ秒で設定する(日付全体を変更する)
get FulYear()メソッド
4桁の年を取得
set FulYearメソッド
四桁の年を設定します.
get Month()方法
獲得月(0~11、1から12月まで)
set Month()方法
月(0~11、1~12月、11を超える年)を設定します.
get Date()方法
取得日数(1~31は、1から31まで)
set Date()メソッド
設置日数(1~31は、1~31日までで、当月の日数を超えると、月が増える)
get Day()方法
日曜日から土曜日まで、外国人は日曜日を一週間の第一日とします.
注:setDay()の方法はありません.曜日は年月日で決まります.
get Hoursの方法
獲得時間(0~23)
セットHoursの方法
設定時間(0~23、23を超えると日数が増加します)
get Minutes()方法
獲得分(0~59)
set Minutes()方法
設定分(0~59,59を超えると時間が増加します)
get Seconds()の方法
秒数(0~59)を取得します.
set Seconds()の方法
秒数を設定する(0~59、59を超えると分が増加する)
get Milliseconds()方法
ミリ秒を取得
set Milliseconds()の方法
ミリ秒を設定
二.他の内蔵オブジェクト
ECMA-622は、内蔵オブジェクトの定義について、「ECMAScriptによって提供される、宿主環境に依存しないオブジェクトは、ECMAScriptプログラムが実行される前から存在しています.」つまり、内蔵オブジェクトを明示的に実例化する必要はない.前に、Object、Aray、Stringなど、多くの内蔵オブジェクトを紹介しました.
ECMA-622はまた、2つの単体内蔵オブジェクト:MathとGlobalを定義しています.
一.Mathオブジェクト
Mathオブジェクトは、数学計算のための属性と方法を提供します.
Math.E属性
自然対数の基数、すなわちeの値
Math.PI属性
πの値
Math.SQRT 2プロパティ
2の平方根
Math.max()方法
任意の複数のデジタルパラメータを受信し、最大値を返します.
Math.min()方法
任意の複数のデジタルパラメータを受信し、最小値を返します.
テクニック:上の方法で配列の最大値を見つけます.
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);
Math.ceeir方法一番近い整数を上(大)に丸めます.
Math.florメソッド
下(小)に丸めた整数が一番近い整数です.
Math.round()方法
四捨五入は最も近い整数である.
Math.random()方法
0以上を返しますが、1未満の乱数を返します.
Math.abs()方法
絶対値を返します
Math.pow(x,y)方法
xのy乗を返します
Math.sqrt()方法
平方根を返します
立方根を返すためのMath.pow(x,1/3)
二.Globalオブジェクト
GlobalオブジェクトはECMAScriptの中で最も特別なオブジェクトです.どの角度から見てもこのオブジェクトは存在しません.Globalオブジェクトはある意味究極の「ポケットオブジェクト」として定義されています.言い換えれば、他のオブジェクトに属さない属性と方法は、最終的にはその属性と方法である.
実際には、グローバル変数やグローバル関数がありません.すべてのグローバルスコープで定義されている属性と関数は、Globalオブジェクトの属性であり、ウェブブラウザでは、WindowsオブジェクトはGlobalオブジェクトの役割を果たしています.
エンコーディング()方法
エンコーディング方法
URIまたは他のテキストをエンコードし(文字列形式)、コピーを返します.一部の文字は16進数の変換シーケンスに置き換えられます.
var uri = “http://www.baidu.com/my name”;
encodeURI(uri) // “http://www.baidu.com/my20%name”
encodeURIComponent(uri); // "http%3A%2F%2Fwww.baidu.com%2Fmy%20name"
なぜコード化しますか?ブラウザで有効なURIは、スペースなどの文字を含むことができません.コード化後、ブラウザが正常に解析できます.encodeURI()は主に全体URI(例えばhttp://www.wrox.com/illegal value)に用いられる.
encodeURIComponentは主にURIの中のある一節(例えば前のURIの中のillegal value.httm)に用いられます.
エンカウント()は、自身がURIに属する特殊な文字を符号化しません.例えば、コロン、正のスラッシュ、疑問符、井戸のサイズなどです.encodeURIComponentはその発見した任意の非標準文字をエンコードします.
decodeURI()方法
decodeURIComponentメソッド
上記の方法を用いて符号化された文字列をそれぞれ復号する(すなわち逆方向動作)
注:escape()とunescape()の方法はECMA 3では廃棄されます.上記の方法で代替します.
eval()方法
eval()方法はまるでECMAScript解析器のようです.一つのパラメータ、すなわち実行するJavaScript文字列しか受け入れられません.
eval("alert('hi')");
に相当するalert("hi");
解析器がeval()方法を発見すると、導入されたパラメータを実際のECMAScript文として解析し、実行結果を元の位置に挿入します.eval()によって実行されるコードは、現在実行されている環境の一部と考えられるので、実行されるコードは、その実行環境と同じ作用領域チェーンを有する.これは、環境内で定義された変数がeval()によって実行されるコードに引用されることを意味する.var msg = "hello world";
eval("alert(msg)"); //"hello world"
これは上の2行目のコードが最終的に1行の本当のコードに置き換えられたからです.同様に、eval()呼び出しで関数または変数を定義し、その後、呼び出した外部コードにこの関数または変数を参照することもできます.eval("function sayHi() { alert('hi'); }");
sayHi();
注:厳格モードでは、外部からのアクセスがeval()によって作成された変数や関数は一切ありません.注:eval()に作成された任意の変数や関数は、プリコンパイルの場合は、文字列に含まれていますので、アップグレードされません.それらはeval()が実行する時のみ作成されます.
注:コード文字列を説明できる能力は非常に強いですが、非常に危険です.したがって、eval()を使用する場合は、特にユーザ入力データを実行する場合には極めて慎重でなければならない.そうでないと、悪意のあるユーザーがあなたのサイトやアプリケーションのセキュリティを脅かすコードを入力する可能性があります(いわゆるコード注入).
Globalオブジェクトの属性
特殊な値はundefined、NaN、InfinityともにGlobalオブジェクトの属性です.
また、すべての原生引用タイプの構造関数は、Globalオブジェクトの属性:Object、Aray、Function、Boolean、String、Numberである.