} 配列
Aelオブジェクトが持つ値を配列に変換して返す。[[BR]]
値がArray型の場合は全ての値をコピーした新しい配列を生成して返す。値がそれ以外の場合、includeに true を指定した場合は値をセットした新しい配列を生成して返す。未指定の場合は空の配列を生成して返す。
=== toBoolean ===
{{{
ael toBoolean() : boolean
}}}
* @version 0.3
* @return {boolean} 真偽値
Aelオブジェクトが持つ値を真偽値に変換して返す。[[BR]]
Boolean型への変換ルールはECMAScript 3rdの型変換仕様に準ずる。
=== toJSONString ===
{{{
ael toJSONString([boolean partial]) : string
}}}
* @version 0.2
* @param {boolean} [partial] RFCに定められた最低限のエスケープを指示するフラグ(デフォルト:false)
* @return {string} JSON形式文字列
Aelオブジェクトの値をJSON形式の文字列へ変換して返す。[[BR]]
JSON文字列への変換はRFC 4627に基づいて行う。この関数はデフォルトで文字列値に対して制御文字を除いた全ての文字をUnicodeエスケープ(\uXXXX)する。これは各ブラウザの!JavaScriptインタプリタが、それぞれ特定の文字を読み落としてしまう問題を自然に回避する為である。Unicodeエスケープを行いたくない場合はpartial引数に true を指定することで無効にできる。
=== toNumber ===
{{{
ael toNumber() : number
}}}
* @version 0.3
* @return {number} 数値
Aelオブジェクトが持つ値を数値に変換して返す。[[BR]]
Number型への変換ルールはECMAScript 3rdの型変換仕様に準ずる。
=== toString ===
{{{
ael toString() : string
}}}
* @version 0.3
* @return {string} 文字列
Aelオブジェクトが持つ値を文字列に変換して返す。[[BR]]
String型への変換ルールはECMAScript 3rdの型変換仕様に準ずる。
== prototypeプロパティ ==
=== val ===
{{{
prototype val() : any
}}}
* @version 0.3
* @return {any} オブジェクト自身を返す。
オブジェクト自身を返す。[[BR]]
このメソッドはaelメソッドとprototypeメソッド内で、処理対象の値の取得方法を共通化させる事を目的としている。例えば次のようなAel.sample.Counterクラスがあったとして、valメソッドがない場合では冗長になってしまうincrementメソッドの定義が、valメソッドがあることで冗長さを無くすことができる。
{{{
#!html
//valメソッドがない場合
Ael.package_("sample").class_("Counter", {
"instance count" : 0,
"ael increment" : function(){
this.val().count++;
},
"prototype increment" : function(){
this.count++;
}
});
//valメソッドがある場合
Ael.package_("sample").class_("Counter", {
"instance count" : 0,
"ael prototype increment" : function(){
this.val().count++;
}
});
}}}
== staticプロパティ ==
=== class_ ===
{{{
static class_(string name|object option[, object... properties) : function
}}}
* @version 0.1
* @param {string|object} name クラス名|option オプション
* @parem {object} properties プロパティ定義
* @return {function} クラス
クラスを作成する。[[BR]]
第一引数にオプションを指定することで手軽にカスタマイズできます。
||名称||型||初期値||説明||
||name||string||(必須)||クラス名||
||type||any||(作成したクラス)||Aelオブジェクトで値とバインドする型。||
||aliases||Array||[]||typeを複数指定する場合はaliasesで指定する。||
[[BR]]
=== instanceOf ===
{{{
static instanceOf(any value[, object clazz...]) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @param {object} clazz クラス
* @return {boolean} true - 値が指定されたクラスのインスタンスの場合
値が指定されたクラスのインスタンスの場合は true を返す。[[BR]]
このメソッドはinstanceof演算子が実装されていない古い!JavaScript実装での動作を目的とした代替実装で、判定には値のconstructorプロパティを用いる。constructorプロパティはnullと未定義値以外に存在し、その値を生成したクラス(関数)が格納されている。インスタンスのconstructorプロパティは関数以外の値にも置き換えられるため、第二引数のクラスは関数以外も許容する。[[BR]]
なお、instanceof演算子とこのメソッドは同等ではない。例えば特定のプリミティブ値(boolean型、number型、string型)やconstructorプロパティを置き換えたオブジェクトを比較した場合、instanceof演算子は false を返すが、instanceOfメソッドは true を返す。
{{{
#!html
alert( "a" instanceof String ); // false
var value = {constructor : Ael.sample.Counter};
alert( value instanceof Ael.sample.Counter ); // false
alert( Ael.instanceOf("a", String) ); // true
alert( Ael.instanceOf(object, Ael.sample.Counter) ); // true
}}}
二つの結果が違う原因はinstanceOfメソッドはconstructorプロパティで型を判断するのに対し、instanceof演算子は内部で持つ本当の型情報で判断するからです。従ってこのメソッドで判別する場合はconstructorプロパティを書き換えると型を偽装することが可能ですが、instanceof演算子ではできません。
=== isObject ===
{{{
static isObject(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値がオブジェクトの場合
値がオブジェクトの場合は true を返す。[[BR]]
このメソッドがオブジェクトと判別する値はプロパティを持つ事ができ、関数の引数に指定した場合は参照渡しとなる値です。従って関数は true を返し、プリミティブ値や未定義値、nullは false を返す。
{{{
#!html
オブジェクト (true を返す) | {} |
| [] |
| new Boolean(false) |
| new Number(1) |
| new Number(NaN) |
| new String("a") |
| function(){} |
| new Function() |
|
|
プリミティブ (false を返す) | true |
| 1 |
| "a" |
| NaN |
| null |
| void 0 |
|
}}}
このメソッドは次のコードと等しい。
{{{
#!html
value !== null && (typeof value === "object" || typeof value === "function");
}}}
=== isBoolean ===
{{{
static isBoolean(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が真偽型の場合
値がBoolean型の場合は true を返す。[[BR]]
この関数は値がプリミティブ、オブジェクト問わず真偽型であれば true を返す。
=== isNumber ===
{{{
static isNumber(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が数値型の場合
値がNumber型の場合は true を返す。[[BR]]
この関数は値がプリミティブ、オブジェクト問わず数値型であれば true を返す。
=== isString ===
{{{
static isString(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が文字列型の場合
値がString型の場合は true を返す。[[BR]]
この関数は値がプリミティブ、オブジェクト問わず文字列型であれば true を返す。
=== isFunction ===
{{{
static isFunction(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が関数、または無名関数の場合
値が関数(無名関数を含む)の場合は true を返す。[[BR]]
型の判定にはtypeof演算子を用いており、このメソッドは次のコードと等しい。
{{{
#!html
typeof(value) === "function"
}}}
=== isNative ===
{{{
static isNative(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値がネイティブコードを含む関数の場合
値がネイティブコードを含む関数の場合は true を返す。[[BR]]
判定は関数の文字列表現に"[native code"が含まれるか、または"[function]"と完全一致するかで行う。"[native code]"で判別しない理由はRhinoの文字列表現(例:"[native code for Function.Function, arity=1]")に対応する為で、"[function]"もKJSの古いバージョンに対応する為です。
=== isArray ===
{{{
static isArray(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が配列系オブジェクトの場合
値がArrayオブジェクト、またはArgumentsオブジェクトの場合は true を返す。
=== isArguments ===
{{{
static isArguments(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が引数オブジェクトの場合
値がArgumentsオブジェクトの場合は true を返す。[[BR]]
ECMAScriptの仕様ではObjectオブジェクトにcalleeとlengthプロパティを付与したものとされていることから、判定はクラスと二つのプロパティの有無で行う。値がObjectオブジェクトであり、プロパティが両方ともを存在する場合は true を返し、それ以外は false を返す。また、Operaの引数はArrayオブジェクトであるのでArrayオブジェクトも許容する。
=== isNull ===
{{{
static isNull(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値がnullの場合
値がnullの場合は true を返す。
=== isUndefined ===
{{{
static isUndefined(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が未定義値(void 0)の場合
値が未定義値(void 0)の場合は true を返す。
=== isNaN ===
{{{
static isNaN(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値がNaN値の場合
値がNaN値の場合は true を返す。[[BR]]
組み込み関数のisNaNは未定義値だと true を返すが、このメソッドはNaN値のみ true を返す。
=== isNoU ===
{{{
static isNoU(any value) : boolean
}}}
* @version 0.1
* @param {any} value 値
* @return {boolean} true - 値が未定義値、またはnullの場合
値がnull、または未定義値の場合は true を返す。
=== namespace ===
{{{
static namespace() : function
}}}
* @version 0.4
簡易名前空間(Aelの複製)を作成して返す。
=== package_ ===
{{{
static package_(string name|object option) : object
}}}
* @version 0.1
* @param {string|object} name パッケージ名|option オプション
* @return {object} パッケージ
パッケージを作成する。
=== parent ===
{{{
static parent() : object|function
}}}
* @version 0.1
* @return {object|function} パッケージまたはクラス
上位パッケージまたは上位クラスを返す。