JavaScript単体内蔵オブジェクト

6947 ワード

Globalオブジェクト
Globalの対象はECMAScriptの中で一番特別な対象と言えます.どの角度から見ても、この対象は存在しません.
ECMAScriptのGlobalオブジェクトはある意味究極の「ポケットオブジェクト」として定義されています.
言い換えれば、他のオブジェクトに属さない属性と方法は、最終的にはその属性と方法である.
実際にはグローバル変数やグローバル関数がありません.グローバルスコープで定義されている属性と関数は全てGlobalオブジェクトの属性です.
例えば、isNan()、isfinite()、パーrseInt()...などの他に、Globalオブジェクトには他の方法が含まれています.
URIコード方法
encodeURI()とencodeURIComponent()方法は、ブラウザに送信するためにURI(Uniflom Resource Identifers)を符号化することができる.有効なURIにはスペースなどの文字は含まれません.この2つのURI符号化方法は、すべての無効な文字を特殊なUTF-8符号化で置き換えてURIを符号化することができ、ブラウザが納得して理解できるようにする.
encodeURI()は主に全体のURI(例えばhttp://www.xxx.com/iii.html)に用いられ、encodeURIComponent()は主にURIのあるセグメント(例えば前のURLのxxx)を符号化するために用いられる.
彼らの主な違いは、エンカウント()が自身のURIに属する特殊な文字を符号化しないことです.例えば、コロン、正斜め棒、安否と井桁など.
エンコーディングは、発見された任意の非標準文字をエンコードします.
var uri = "http://www.xxx.com/iii.html";

alert(encodeURI(uri)); // http://www.xxx.com/iii.html
alert(encodeURIComponent(uri)); // http%3A%2F%2Fwww.xxx.com%2Fiii.html
エンコーディングを使った結果、スペース以外の文字はそのままで、スペースのみを%20に変更しました.エンコーディングは対応する符号を使って文字以外の文字列をすべて置換します.
一般的には、encodeURIComponentメソッドを使用する場合は、encodeURI()よりも多くなります.実際には、基本URI符号よりもクエリ文字列パラメータが一般的です.
encodeURI()とencodeURIComponent()の方法に対応する2つの方法は、それぞれdecodeURI()とdecodeURIComponent()であり、decodeURI()は、encodeURI()の置換された文字のみを用いてデコードすることができます.
var uri = "http%3A%2F%2Fwww.xxx.com%2Fiii.html";

alert(decodeURI(uri)); // http%3A%2F%2Fwww.xxx.com%2Fiii.html
alert(decodeURIComponent(uri)); // http://www.xxx.com/iii.html
URI方法encodeURI()、encodeURIComponent()、decodeURI()とdecodeURIComponent()は、ECMA-622の第3版に飛ばされたescape()とunescape()の代わりに使用されます.
URI方法では、Unicodeのすべての文字をエンコードすることができますが、本来の方法ではASCLL文字だけを正接的にエンコードすることができます.そのため開発実践では、特に製品級のコードの中で、必ずURIメソッドを使用して、escape()やunescape()を使用しないでください.
eval()方法
eval()メソッドは、ECMAScript解析器のような完全なもので、一つのパラメータ、すなわち実行されるECMAScript文字列しか受け入れられません.
eval("alert('hi')");
このコードの役割は次の行のコードと同じです.
alert("hi");
解析器がコードの中でeval()メソッドを呼び出すと、入力されたパラメータを実際のECMAScript文として解析し、実行結果を元の位置に挿入します.
eval()によって実行されるコードは、このコールを含む実行環境の一部と考えられるので、実行されるコードは、その実行環境と同じ作用領域チェーンを有する.
これは、eval()によって実行されるコードが、環境において定義された変数を参照することができることを意味する.
var msg = "hello world";
eval("alert(msg)");  // hello world

eval("function sayHi() { alert('hi'); }");
sayHi()
厳密モードでは、外部からのアクセスがeval()で作成された変数や関数にならないため、上記の例ではエラーが発生します.同様に、厳密モードではeval()の割り当てもエラーを引き起こします.
"use strict"
eval = "hi"  // Uncaught SyntaxError: Unexpected eval or arguments in strict mode
コード文字列を説明できる能力は非常に強いですが、非常に危険です.
したがって、eval()を使用する場合は、特にユーザ入力のデータを実行する場合には慎重にしなければならない.
そうでないと、悪意のあるユーザーがあなたのサイトやアプリケーションのセキュリティを脅かすコードを入力する可能性があります(いわゆるコード注入).
Globalオブジェクトの属性
Globalオブジェクトには、例えば、特殊な値undefined、NaN、InfinityがGlobalオブジェクトの属性である属性も含まれています.また、すべての原生参照タイプの構造関数は、ObjectやFunctのように、Globalオブジェクトの属性でもあります.
属性
説明
属性
説明
undefined
特殊値undefined
Date
コンストラクターDate
Nan
特殊値Nan
RegExp
構造関数RegExp
Infinity
特殊値Infinity
エロエロ
構造関数Errer
Object
コンストラクタObject
EveralError
構造関数EvaalErrer
Aray
構造関数Aray
RangeError
構造関数RangeError
Function
コンストラクタFunction
ReferenceErrer
コンストラクタReferenceErrer
ボロア
コンストラクターBoolean
SyntaxError
コンストラクタSyntxError
String
コンストラクターString
Type Error
構造関数Type Errer
Number
コンストラクタNumber
URIER or
構造関数URIError
ECMAScript 5はundefined、NaN、Infinityへの割り当てを明確に禁止しています.このようにすると非厳格モードでもエラーが発生します.
windowオブジェクト
ECMAScriptはGlobalオブジェクトに直接アクセスする方法を指摘していませんが、Webブラウザはこのグローバルオブジェクトをwindowオブジェクトの一部として実現しています.したがって、グローバルスコープで宣言されたすべての変数と関数は、windowオブジェクトの属性となります.
var color = "red";

function sayColor() {
    alert(window.color);
}

window.sayColor(); // red
sayColor()内部では、window.co lorを通じてカラー変数にアクセスし、変数はwindowオブジェクトの属性であると説明しています.
window.sayColor()を使って直接windowオブジェクトを通じてこの関数を呼び出して、sayColor()もwindowオブジェクトの下に結び付けられていると説明します.
var global = function() {
    return this;
}
簡単にthisに戻ることでGlobalオブジェクトを取得することは、どの環境でも可能です.
Mathオブジェクト
ECMAScriptはまた、数学式と情報を保存するために、Mathオブジェクトという共通の位置を提供しています.Mathオブジェクトは、コピー完了計算の属性と方法を提供しています.
Mathオブジェクトの属性
属性
説明
Math.E
自然対数の基数、すなわち常に明るいeの値
Math.LN 10
10の自然対数
Math.LN 2
2の自然対数
Math.LOG 2 E
2を底にeの対数
Math.LOG 10 E
10を底としたeの対数
Math.PI
πの値
Math.SQRT 1_2
1/2の平方根(すなわち2の平方根の逆数)
Math.SQRT 2
2の平方根
min()とmax()の方法
グループの値の最小値と最大値を決定します.
var max = Math.max(3, 54, 32, 16);
alert(max); // 54

var min = Math.min(3, 54, 32, 16);
Alert(min); // 3
配列の最大値または最小値を見つけるには、次の方法があります.
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);
alert(max) // 8
丸め方法
小数を整数に丸める方法:
  • Math.ceeir()は、常に数値を上に丸めて、最も近い整数に切り捨てるステップを実行します.
  • Math.florは、常に数値を最も近い整数に切り下げる切り下げを実行し、
  • Math.round()は、常に数値を四捨五入して最も近い整数にする標準丸めを実行します.
  • alert(Math.ceil(25.9)); //26
    alert(Math.ceil(25.5)); //26
    alert(Math.ceil(25.1)); //26
    
    alert(Math.round(25.9)); // 26
    alert(Math.round(25.5)); // 26
    alert(Math.round(25.1)); // 25
    
    alert(Math.floor(25.9)); // 25
    alert(Math.floor(25.5)); // 25
    alert(Math.floor(25.1)); // 25
    
    ラドドm()の方法
    Math.random()方法は、0と1の間の乱数を返します.0と1は含まれません.
    Math.randomは、有名人の名言やニュースイベントをランダムに表示するために使用できます.
      = Math.floor(Math.random()) *        +        )
    
    数式では、Math.flor()を使用します.これは、Math.randowm()が合計で小さい値を返します.この小さな数値で整数を掛けて、整数を加えた結果、まだ小数点以下のままです.
    1から10までの数値を選択すると、次の例のようになります.
    var num = Math.floor(Math.random() * 10 + 1);
    
    2から10の間の値を選択したい場合:
    var num = Math.floor(Math.random() * 9 + 2);
    
    2から10までは9個の数を数えます.したがって、可能な値の総数は9で、最初の可能な値は2です.多くの場合、一つの関数で可能な値の総数と最初の可能な値を計算できます.
    function selectFrom(lowerValue, upperValue) {
        var choices = upperValue - lowerValue + 1;
        return Math.floor(Math.random() * choices + lowerValue);
    }
    
    var num = selectFrom(2, 10);
    alert(num); //    2   10   (   2   10)     
    
    //       ,               
    var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];
    var color = colors[selectFrom(0, colors.length - 1)];
    alert(color);
    
    その他の方法
    Mathオブジェクトには、さまざまな単純または複雑な計算を完了する他のいくつかの方法が含まれています.
    方法
    説明
    方法
    説明
    Math.abs(num)
    numの絶対値を返します.
    Math.asin(x)
    xのどうせ眩しい値を返します.
    Math.exp(num)
    Math.Eのnum乗を返します.
    Math.athan(x)
    xのアークタンジェントを返します.
    Math.log(num)
    numの自然対数に戻る
    Math.athan 2(y,x)
    y/xのアークタンジェントを返します.
    Math.pow(num)
    numのパワーポイントを返します.
    Math.com(x)
    xのコサインを返します
    Math.sqrt(num)
    numの平方根を返します.
    Math.sin(x)
    xの正の値を返します
    Math.acos(x)
    numの反コサイン値を返します.
    Math.tan(x)
    xの正接値を返します