Core JavaScript

Core JavaScriptは JavaScript実行エンジンが持っているオブジェクト、クラスと関数の説明を行います。

argumentsオブジェクト ...

関数内のみ存在する配列オブジェクトです。
関数が呼び出されたとき、その引数情報等がセットされています。

引数.
arguments[0],arguments[1], ... は関数に渡された引数の値がセットされます。
arguments.lengthには、関数が呼び出されたときの引数の実際の数がセットされています。

.
function sum(a,b)
{
  var ans = 0;
  for( var i=0; i<arguments.length; ++i ){
    alert( (i+1) + "番目の引数値は " + arguments[i] );
    ans += arguments[i];
  }
}

var ans = sum(10,20,30);
// 1番目の引数値は 10
// 2番目の引数値は 20
// 3番目の引数値は 30
alert( ans ); // 60

arguments : プロパティ・関数・・・リスト
calleeプロパティ "use strict"モード時には使用できない 実行中の関数
lengthプロパティ 実行中の関数の実引数の数

callee プロパティ JS1.2 (非推奨)arguments...

実行中の関数

arguments.callee : Function [ReadOnly]

解説
通常関数内では実行中の関数は名前が付けてあるので分かります。
しかし、名前が付いてない関数が自分自身を呼び出すときにはこのプロパティが役立ちます。
ただし、"use strict"モード時には使用できないので注意してください。
//最大公約数
var gcd = function(a, b) {
   return (a==0 ? b : arguments.callee(b%a, a));
};
alert( gcd(60,84) );  // 12

length プロパティJS1.1arguments...

実行中の関数の実引数の数 [ReadOnly]

arguments.length : Integer

解説
実行中の関数の実際の引数の数を返します。
function argcheck()
{
  alert( arguments.length );
}
alert( argcheck(1,2,3,4) );  // 4
参照
function.length

global オブジェクト ...

globalオブジェクトのプロパティと関数はオブジェクトを「.」で指定しないで呼び出せます。

例えば
     alert( Infinity );      // Infinity
     alert( isFinite(10) );  // true
 

global : プロパティ・関数・・・リスト
Infinityプロパティ 初期値に Number.POSITIVE_INFINITY がセットされています。
NaNプロパティ 初期値に Number.NaN がセットされています。
undefinedプロパティ undefined 値
decodeURI関数 encodeURIによって作成されたURIをデコード
decodeURIComponent関数 encodeURIComponentによって作成されたURIの要素をデコード
encodeURI関数 URIをエンコード
encodeURIComponent関数 URIの要素をエンコード
escape関数 文字列をエスケープエンコード
eval関数 JavaScript のコードを評価し、実行します。
isFinite関数 値が有限かどうかの判定
isNaN関数 値が NaN (not a number) かどうかの判定
Number関数 オブジェクトを数値に変換
parseFloat関数 文字列をパースして浮動小数点数を得ます。
parseInt関数 文字列をパースして整数を得ます。
String関数 オブジェクトを文字列に変換
unescape関数 文字列をデコード
uneval関数 値から式を得る(evalの逆関数)

Infinity プロパティJS1.3global...

初期値に Number.POSITIVE_INFINITY がセットされています。

Infinity : Number

解説
Number.POSITIVE_INFINITYは正の無限大を表します。

Infinityは他のどの数値よりも大です。Infinityは数学的に無限と同じような動作をします。
    alert( Infinity > 3.14e200 ); //true
    alert( 3.14 * Infinity );     // Infinity
    alert( -3.14 * Infinity );    // -Infinity
    alert( 3.14 / Infinity );     // 0
    alert(  0 * Infinity );       // NaN
    alert( Infinity - Infinity ); // NaN
参照
Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY

NaN プロパティJS1.3global...

初期値に Number.NaN がセットされています。

NaN : Number

解説
Number.NaN は数値ではないことを示す特別な値を表します。

NaN は NaN を含めてどの数値とも等しくありません。
    alert( NaN==12.34 );  // false
    alert( NaN==NaN );    // false
数値が NaN であるかどうかは isNaN関数を使用してください。

Numberコンストラクター,parseFloat,parseIntなどいくつかの関数は渡された引数値が数値でなければ,NaNを返します。
また,数値を返す関数でエラーが起きた場合,NaNを返すこともあります。
参照
isNaN, Number.NaN

undefined プロパティJS1.3global...

undefined 値

undefined : undefined (左辺は型名)

解説
代入されていない変数は、undefined型です。
関数がreturn文を実行しないで終了した場合、その関数の値はundefinedになります。
「void 式」の値はundefinedになります。

var x;
if ( x == undefined ) {
  // ここの部分は実行されます
}

function tmpFunc() {}
alert( tmpFunc() );  // undefined

alert(void 0); // undefined

decodeURI 関数JS1.5global...

encodeURIによって作成されたURIをデコード

decodeURI( encodedURI ) : String

引数
encodedURI : String
完全な、エンコードされた URI。
返値
エンコードされた URI 内のエスケープシーケンスをそれぞれが表す文字に変換した文字列を返します。
encodeURI によってエンコードされていないと思われるエスケープシーケンスは、デコードされません。
参照
decodeURIComponent, encodeURI, encodeURIComponent

decodeURIComponent 関数JS1.5global...

encodeURIComponentによって作成されたURIの要素をデコード

decodeURIComponent( encodedURI ) : String

引数
encodedURI : String
完全な URI。
返値
エンコードされた URI の要素内のエスケープシーケンスをそれぞれが表す文字に変換した文字列を返します。
参照
decodeURI, encodeURI, encodeURIComponent

encodeURI 関数JS1.5global...

URIをエンコード

encodeURI(URI) : String

引数
URI : String
エンコードされた URI の要素
返値
以下を除く全ての文字を 適切な UTF-8 エスケープシーケンスで置き換えた文字列を返します。:
種類 含む文字
予約された文字 ; , / ? : @ & = + $
エスケープされない文字 アルファベット、数字、- _ . ! ~ * ' ( )
スコア #
参照
decodeURI, decodeURIComponent, encodeURIComponent

encodeURIComponent 関数JS1.5global...

URIの要素をエンコード

encodeURIComponent(string) : String

引数
string : String
URIの要素
返値
以下を除く全ての文字をエスケープします。:
アルファベット、数字、- _ . ! ~ * ' ( )
参照
decodeURI, decodeURIComponent, encodeURI

escape 関数JS1.0global...

文字列をエスケープエンコード

escape( string )

引数
string : String
エスケープエンコードする文字列。
返値
URL として用いることができない記号や日本語を %unnnn の形式に変換した文字列エンコードしたものを返します。
print( escape("abcあいう") ); // abc%u3042%u3044%u3046
参照
unescape

eval 関数JS1.0global...

JavaScript のコードを評価し、実行します。

eval( code )

引数
code : String
JavaScriptの式、文 あるいは 文の列からなる文字列を与えます
返値
codeの内容が式なら、その評価結果を返します
codeの内容が 文 あるいは 文の列なら、最後に評価された式の値を返します。
解説
 code 内に変数を使っていれば、eval関数が実行される位置で使える変数の値が採用されます。

例えば、
   var x = 1;
   function A()
   {
      var x = 100;
      return eval( "2 * x + 1" );
   }
   alert( eval( "2 * x + 1" ) );  // 3  x=1で計算
   alert( A() );   // 201

例1.単純な計算
  alert( eval("100/2 + 1") );  //51
  
例2.変数の値を変更
  var z;
  z = random();
  eval( 'if( z<0.5 ) z = 0; else z = 1;' );
  alert( z );   // 0 or 1 ?
参照
uneval, evaluate

isFinite 関数JS1.2global...

値が有限かどうかの判定

isFinite(number) : Boolean

引数
number : Number
判定したい数値
返値
numberがNaN, Infinity または -Infinity であれば、falseを返します。
その他の値であれば、trueを返します。
  if(isFinite(ClientInput) == true)
  {
     // ClientInputを使って計算をします。
  }
参照
Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY

isNaN 関数JS1.1global...

値が NaN (not a number) かどうかの判定

isNaN(testValue) : Boolean

引数
testValue
判定したい値
返値
testValueが NaN であれば、trueを返します。その他の値なら、falseを返します。
解説
通常、parseInt メソッドや parseFloat メソッドからの戻り値を調べるために使用します。
NaN==NaN はfalseとなるので、値がNaNかどうかはisNaN関数を使わないと判定できません。
参照
Number.NaN, parseFloat, parseInt

Number 関数JS1.1global...

オブジェクトを数値に変換

Number(obj) : Number

引数
obj
オブジェクト
返値
オブジェクトを数値に変換します。変換できない場合 NaNを返します。
解説
objがDataオブジェクトである場合、1970年 1月 1日 00:00:00(UTC) からのミリ秒を返します。
objが数値リテラルに適合していない文字列であれば、NaNを返します。
d = new Date ("December 17, 1995 03:24:00");
alert(Number(d)); // 819199440000

alert( Number("3.14") );      // 3.14
alert( Number("3.14 + 1") );  // NaN

parseFloat 関数JS1.0global...

文字列をパースして浮動小数点数を得ます。

parseFloat(string) : Number

引数
string : String
パースしたい文字列
返値
文字列からパースして浮動小数点数が取り出せればその値を返します。取り出せなければNaNを返します。
解説
パースして、符号(+/-),数(0-9), .数(0-9)から始まれば、浮動小数点数として認識
できるかぎりパースしていきます。
パースできないときの値 NaN かどうかを調べるには、isNaN関数を使用します。
alert( parseFloat("3.14") )   // 3.14
alert( parseFloat("+3.14") )  // 3.14  +
alert( parseFloat("-3.14") )  // -3.14 -
alert( parseFloat(" 3.14") )  // 3.14  space
alert( parseFloat("314e-2") ) // 3.14  指数表記
var x = "3.14"
alert( "[4]" + parseFloat(x) ) // 3.14

alert( "[5]" + parseFloat("FF2") ) //NaN
参照
isNaN, parseInt

parseInt 関数JS1.0, 1.1global...

文字列をパースして整数を得ます。

parseInt(string[, radix]) : Integer

引数
string : String
パースしたい文字列
radix : Integer | String
引数 string に含まれる数値の基数を表す 2 ~ 36 の範囲の値を指定します。省略した場合、先頭に "0x" が付いている文字列は 16 進数、"0" が付いている文字列は 8 進数と見なされます。これ以外の文字列は、10 進数と見なされます。
返値
文字列からパースして整数が取り出せればその値を返します。取り出せなければNaNを返します。
解説
パースして、符号(+/-),数(0-9) (基数が11以上ならアルファベット(A-Z,a-z))から始まれば、整数として認識
できるかぎりパースしていきます。
パースできないときの値 NaN かどうかを調べるには、isNaN関数を使用します。
alert( parseInt("123") )        // 123
alert( parseInt("-123") )       // -123  -
alert( parseInt("+123") )       // 123   +
alert( parseInt(" 123") )       // 123   space
alert( parseInt("F", 16) )      // 15
alert( parseInt("17", 8) )      // 15
alert( parseInt("15", 10) )     // 15
alert( parseInt(15.99, 10) )    // 15
alert( parseInt("FXX123", 16) ) // 15
alert( parseInt("1111", 2) )    // 15
alert( parseInt("15*3", 10) )   // 15

alert( parseInt("Hello", 8) )   // NaN
alert( parseInt("FFF", 10) )    // NaN
参照
isNaN, parseFloat, object.valueOf, number.toString

String 関数 JS1.0, 1.1, 1.2global...

オブジェクトを文字列に変換

String(obj) : String

引数
obj
オブジェクト
返値
変換したオブジェクトの文字列を返します。
解説
obj.toString()と同じ結果が返されます。
D = new Date(430054663215);
alert( String(D) );  // Thu Aug 18 1983 20:37:43 GMT+0900

unescape 関数JS1.0global...

文字列をデコード

unescape( string )

引数
string : String
デコードする文字列。
返値
文字列内の %unnnn 部分を対応した文字にエンコードした文字列を返します。
print( unescape("abc%u3042%u3044%u3046") ); // abcあいう
参照
escape

uneval 関数JS1.5global...

値から式を得る(evalの逆関数)

uneval( value ) : String

引数
value : Any
値。その型はJavaScriptがNativeでサポートする型に限ります。
返値
eval関数で評価するとvalueとなる文字列を返します。
var o = {
    'boolean'  :false,
    'number'   :1,
    'string'   :'Can\'t you "uneval" this? \\',
    'null'     :null,
    'undefined':undefined,
    'function' :function(o){ return o },
    'array'    :[0,1,2,3],
    'regexp'   :/[0-9A-Za-z]+/g,
    'date'     :new Date(),
    'object'   :{zero:0,one:1}    
};

print( uneval(o) );

//({boolean:false, number:1, string:"Can't you \"uneval\" this? \\", null:null, undefined:(void 0), function:(function (o) {return o;}), array:[0, 1, 2, 3], regexp:/[0-9A-Za-z]+/g, date:(new Date(1204535241968)), object:{zero:0, one:1}})
参照
eval

JSON モジュール ...

JSONとはJavaScript Object Notationの略で、XMLなどと同様のテキストベースのデータフォーマットです。
XMLと比べると簡潔に構造化されたデータを記述することができるため、記述が容易で人間が理解しやすいデータフォーマットです。

このJSON形式のデータはJavaScriptで式評価が許される(eval()で式評価できる)ものであれば何でも構いません。基本的には以下の形式になります。
  {
      "プロパティ名" : 値,
      ....
  }
  値は、基本値(数値・文字列・論理値・null)またはJSON型オブジェクト・配列をセットします。

 :
  {
    "name" : "Ichiro Tanaka",
    "age"  : 20,
    "uselangs": ["Java", "Python"]
  }
最近 Webアプリケーションでは、サーバーとの通信データは XML形式を採用していたが それと同等の表現力を持ち より軽いJSON形式を多く使われるようになりました。

JSON モジュールでは、JSON形式の文字列データと Native JavaScriptオブジェクト間の変換関数をそろえています。

JSON : プロパティ・関数・・・リスト
parse関数 JSON文字列をJavaScriptオブジェクトに変換
stringify関数 JavaScriptオブジェクトをJSON文字列に変換
toJSON変換作用素 JSON文字列変換時、プロパティ値を変換する作用素

parse 関数JS1.8.1JSON...

JSON文字列をJavaScriptオブジェクトに変換

JSON.parse( text[, reviver] ) : Object

引数
text : String
JSON文字列
reviver : Function
プロパティ値を変換する関数
指定がなければ、変換しない。
返値
JSON文字列を解釈して(JSON)オブジェクトを返します。
参照
stringify
var jsonString = '{"bar":"new property","baz":3}';
var jsonObj = JSON.parse(jsonString);
print(jsonObj.bar);	// new property
print(jsonObj.baz);	// 3

var transformed =  
  JSON.parse('{"x": 5, "y": 2}', function(k, v) { if (k === "") return v; return v * 2; });
print(transformed.x); // 10
print(transformed.y); // 4

stringify 関数JS1.8.1JSON...

JavaScriptオブジェクトをJSON文字列に変換

JSON.stringify( value[, replacer , space]] ) : String

引数
value : Object
JSON文字列へ変換したいオブジェクト
replacer : Function or Array or null
replacerが関数である場合、keyのプロパティ値を変換する関数を指定します。(値の変換)
replacerが配列である場合、配列の要素だけを keyとしたプロパティとしてJSON文字列へ変換します。(フィルター)
nullである場合、そのままJSON文字列へ変換します。
スペース文字を挿入して整理される。
返値
(JSON)オブジェクトをJSON文字列に変換して返します。
参照
var foo = {bar: "new property", baz: 3};

var jsonString = JSON.stringify(foo);
print(jsonString);	// {"bar":"new property","baz":3}

//---
function censor(key, value) {  
  if (typeof(value) == "string") {  
    return undefined;  
  }  
  return value;  
}  

var jsonString = JSON.stringify(foo, censor);
print(jsonString);  // {"baz":3}

//---
var jsonString = JSON.stringify(foo, ["bar"]);
print(jsonString);  // {"bar":"new property"}

//---
var jsonString = JSON.stringify(foo, null, "  ");
print(jsonString);
/*
{
  "bar": "new property",
  "baz": 3
}*/

toJSON 変換作用素JS1.8.1JSON...

JSON文字列変換時、プロパティ値を変換する作用素

{
   key: value,
   //...: ....
   toJSON: function() {
     //...
     return valued;
   }
}

var x = {  
  foo: 'foo',  
  toJSON: function () {  
    return 'bar';  
  }  
};
var y = {name: "Jon", age: 20};
var json = JSON.stringify({a: x, b: y}); 
print(json);  // {"a":"bar","b":{"name":"Jon","age":20}}

Math モジュール ...

数学上の関数や定数がMathモジュールから呼び出したり、値を取り出すことができます。

E定数 Euler定数
LN2定数 2 の自然対数。0.693...
LN10定数 10 の自然対数。2.302...
LOG2E定数 2 を底とした E の対数。1.442...
LOG10E定数 10 を底とした E の対数。0.434...
PI定数 円周率 π
SQRT1_2定数 1/2 の平方根。つまり、1 割る 2 の平方根。0.707...
SQRT2定数 2 の平方根。1.414...
abs関数 絶対値を計算
acos関数 アークコサインを計算
asin関数 アークサインを計算
atan関数 アークタンジェントを計算
atan2関数 X軸から座標 (x,y) までのラジアン単位の角度を計算
ceil関数 等しいかまたはそれより大きい値となる最小の整数を計算
cos関数 コサインを計算
exp関数 e (自然対数の底) の累乗を計算
floor関数 等しいかまたはそれより小さい値となる最大の整数を計算
log関数 自然対数を計算
max関数 最大数を計算
min関数 最小数を計算
pow関数 累乗計算
random関数 0 ~ 1 の範囲での擬似乱数を計算
round関数 最も近い整数を計算
sin関数 サインを計算
sqrt関数 平方根を計算
tan関数 タンジェントを計算
toSource関数 "Math" という文字列を返します。

E 定数JS1.0Math...

Euler定数

Math.E : Number [ReadOnly]

解説
自然対数の底(e)  2.718...

LN2 定数JS1.0Math...

log(2)

Math.LN2 : Number [ReadOnly]

解説
2 の自然対数。0.693...

LN10 定数JS1.0Math...

log(10)

Math.LN10 : Number [ReadOnly]

解説
10 の自然対数。2.302...

LOG2E 定数 JS1.0Math...

log2(e)

Math.LOG2E : Number [ReadOnly]

解説
2 を底とした E の対数。1.442...

LOG10E 定数 JS1.0Math...

log10(e)

Math.LOG10E : Number [ReadOnly]

解説
10 を底とした E の対数。0.434...

PI 定数 JS1.0Math...

円周率 π

Math.PI : Number [ReadOnly]

解説
3.14159...

SQRT1_2 定数 JS1.0Math...

1/sqrt(2)

Math.SQRT1_2 : Number [ReadOnly]

解説
1/2 の平方根。つまり、1 割る 2 の平方根。0.707...

SQRT2 定数 JS1.0Math...

sqrt(2)

Math.SQRT2 : Number [ReadOnly]

解説
2 の平方根。1.414...

abs 関数 JS1.0Math...

絶対値を計算

Math.abs( n ) : Number

引数
n : Number
数値
返値
指定された数値の絶対値を返します。

acos 関数 JS1.0Math...

アークコサインを計算

Math.acos( n ) : Number

引数
n : Number
数値
返値
指定された数値のアークコサインを返します。
参照

asin 関数 JS1.0Math...

アークサインを計算

Math.asin( n ) : Number

引数
n : Number
数値
返値
指定された数値のアークサインを返します。
参照

atan 関数 JS1.0Math...

アークタンジェントを計算

Math.atan( n ) : Number

引数
n : Number
数値
返値
指定された数値のアークタンジェントを返します。
参照

atan2 関数 JS1.0Math...

X軸から座標 (x,y) までのラジアン単位の角度を計算

Math.atan2( y, x ) : Number

引数
y, x : Number
数値
返値
X軸から座標 (x,y) までのラジアン単位の角度(-π~π)を返します。
参照

ceil 関数 JS1.0Math...

等しいかまたはそれより大きい値となる最小の整数を計算

Math.ceil( n ) : Number

引数
n : Number
数値
返値
指定された数値と等しいかまたはそれより大きい値となる最小の整数を返します。
print( Math.ceil(2.0) );  // 2;
print( Math.ceil(2.1) );  // 3
print( Math.ceil(-2.1) ); // -2
 
参照

cos 関数 JS1.0Math...

コサインを計算

Math.cos( n ) : Number

引数
n : Number
数値
返値
指定された数値のコサインを返します。
参照

exp 関数 JS1.0Math...

e (自然対数の底) の累乗を計算

Math.exp( n ) : Number

引数
n : Number
数値
返値
指定された数値を指数とする e (自然対数の底) の累乗を返します。
参照
E定数, log, pow

floor 関数 JS1.0Math...

等しいかまたはそれより小さい値となる最大の整数を計算

Math.floor( n ) : Number

引数
n : Number
数値
返値
指定された数値と等しいかまたはそれより小さい値となる最大の整数を返します。
print( Math.floor(2.0) );  // 2;
print( Math.floor(2.1) );  // 2
print( Math.floor(-2.1) ); // -3
 
参照

log 関数 JS1.0Math...

自然対数を計算

Math.log( n ) : Number

引数
n : Number
数値
返値
指定された数値の自然対数を返します。
参照
exp, pow

max 関数 JS1.0Math...

最大数を計算

Math.max( [n1, n2, ...] ) : Number

引数
n1, n2, ... : Number
数値
返値
指定された 0個 以上の数値のうち大きい方の値を返します。
引数がない場合、-Infinity を返します。
参照
min

min 関数 JS1.0Math...

最小数を計算

Math.min( [n1, n2, ...] ) : Number

引数
n1, n2, ... : Number
数値
返値
指定された 0個 以上の数値のうち小さい方の値を返します。
引数がない場合、Infinity を返します。
参照
max

pow 関数 JS1.0Math...

累乗計算

Math.pow( base, exponent ) : Number

引数
base : Number
累乗の基数とする値
exponent : Number
累乗の指数とする値
返値
exponent を指数とする base の累乗を返します。
参照
exp, log

random 関数 JS1.0, 1.1Math...

0 ~ 1 の範囲での擬似乱数を計算

Math.random( ) : Number

返値
生成される擬似乱数は、0 ~ 1 の範囲内の値をとります (0 は含まれ、1 は含まれません)。
 つまり、戻り値が 0 になることはあっても 1 になることはありません。
 乱数ジェネレータのシードは、JavaScript がロードされた時点で自動的に生成されます。

round 関数 JS1.0Math...

最も近い整数を計算

Math.round( n ) : Number

引数
n : Number
数値
返値
指定された数式の値に最も近い整数を返します。
解説
引数 n の小数部分が 0.5 以上の場合、この引数より大きい値となる最小の整数が戻り値として返されます。
小数部分が 0.5 未満の場合、この引数より小さいかまたは等しい値となる最大の整数が戻り値として返されます。

sin 関数 JS1.0Math...

サインを計算

Math.sin( n ) : Number

引数
n : Number
数値
返値
指定された数値のサインの値を返します。
参照

sqrt 関数 JS1.0Math...

平方根を計算

Math.sqrt( n ) : Number

引数
n : Number
数値
返値
指定された数値の平方根を返します。
負の値を指定すると、戻り値は NaN になります。

tan 関数 JS1.0Math...

タンジェントを計算

Math.tan( n ) : Number

引数
n : Number
数値
返値
指定された数値のタンジェントの値を返します。
参照

toSource 関数 (非標準)Math...

"Math" という文字列を返します。

Math.toSource() : String

返値
"Math" という文字列を返します。

Arrayクラス ...

配列を扱うクラスです。

作成方法
Arrayコンストラクター
  new Array( arryLength )
  new Array( element0, element1, ..., elementN )
Arrayリテラル
  [element0, element1, ..., elementN]

パラメーター
arryLength 配列の初期長さ。この値はlengthプロパティでアクセスできます。 Numberでなければ、指定された値をもつ長さ1の配列が作成されます。 最大長さは4,294,967,295まで許されます。
element0N 配列要素の値。この形式の場合、この要素を持つ配列が作成されます。 この配列のlengthプロパティは引数の数となります。 引数がない場合、長さ0の配列となります。
解説 配列は値集合を順序数(0,1,2,...)と結び付けたものです。
次の例はArrayリテラルで作成されたArrayオブジェクトです。3つの要素を持ち、長さは3 : coffees = ["French Roast", "Columbian", "Kona"]; myArray = new Array( "Hello", myVar, 3.14159);
配列のindex. 配列は順序数(0,1,2,...)でindex化します。 例えば myArray = new Array("Wind","Rain","Fire") 最初の要素はmyArray[0]で参照、2番目はmyArray[1]で参照します。
1つパラメーターを与えた場合.1つパラメーターに数を渡すとその長さの配列を作成します。 billingMethod = new Array(5); は、長さ5の配列となります。
次は長さ25の配列で、最初3つの要素に値が代入されます。 musicTypes = new Array(25); musicTypes[0] = "R&B"; musicTypes[1] = "Blues"; musicTypes[2] = "Jazz";
配列長さの増加. 配列の長さ以上のindex位置に代入すると長さが増加します。 colors = new Array(); alert( colors.length ); // 0 colors[99] = "midnightblue"; alert( colors.length ); // 100
変異メソッド. 以下ののメソッドは配列を書き換えます。: pop(), push(), reverse(), shift(), sort(), splice(), unshift()

constructorプロパティ オブジェクトのプロトタイプを生成する関数
indexプロパティ 正規表現マッチの位置
inputプロパティ 正規表現マッチの位置
lengthプロパティ 配列の長さ
Arrayコンストラクター 配列オブジェクトの作成
concat関数 配列の連結
every関数 配列のすべての要素をテスト
filter関数 テストの条件を満たす配列要素を選び出す
forEach関数 与えられた関数を、配列の各要素に対して一度ずつ実行す
indexOf関数 配列の中で与えられた要素を見つける
isArrayクラス関数 配列かどうかの判定
join関数 配列の要素を連結した文字列
lastIndexOf関数 配列の中で与えられた要素の最後の添字を見つける
map関数 配列のすべての要素を処理して新しい配列を作成
pop関数 配列の最後の要素の取り出しと削除
push関数 要素の追加
reduce関数 配列の(左から右へ)の値に対して処理を積み重ねる。
reduceRight関数 配列の(右から左へ)の値に対して処理を積み重ねる。
reverse関数 配列要素を逆順に並べ替える
shift関数 配列の最初の要素の取り出しと削除る
slice関数 部分配列の取り出し
splice関数 配列から要素の追加と削除
some関数 テストに合格する要素が配列の中にあるかどうかをテスト
sort関数 配列の並べ替え
toSource関数 配列のソース文字列を取得
toString関数 配列の文字列化
toLocaleString関数 配列をローカルフォーマットで文字列
unshift関数 配列の先頭に要素を追加
valueOf関数 配列のそのものを取得

constructor プロパティ JS1.1Array...

オブジェクトのプロトタイプを生成する関数

func.constructor : Object

a = [1,2,3]; // a = new Array(1,2,3);
alert( a.constructor==Array ); //true
 

index プロパティ JS1.2Array...

正規表現マッチの位置

array.index : Integer

解説
正規表現マッチ関数(regexp.exec(str))が返したArrayオブジェクトに付加されたプロパティです。
その値は正規表現にマッチした文字列中の位置を示します。

input プロパティ JS1.2Array...

input

array.input : String

解説
正規表現マッチ関数(regexp.exec(str))が返したArrayオブジェクトに付加されたプロパティです。
その値は正規表現にマッチした元の文字列です。

length プロパティ JS1.1Array...

配列の長さ

array.length : Integer

解説
配列の要素数を示します。値の範囲は0~pow(2,32)-1です。
長さは自由に変更できます。
var a = new Array("a","b","c","d","e"); // var a = ["a","b","c","d","e"];
a.length = 10;
alert( a[6] ); // undefined 配列の拡張要素部分には値がセットされません
alert( a[3] ); // "d" 配列を拡張しても既存の要素は変化しません
a.length = 2;
alert( a[3] ); // undefined  配列を縮小するとその長さを超えた要素は空になります

Array コンストラクター JS1.0, 1.1Array...

配列オブジェクトの作成

① new Array( arryLength ) : Array
② new Array( element0, element1, ..., elementN )

引数
arryLength : Integer
配列の長さを指定します。 0~pow(2,32)-1=4,294,967,295
element0, element1, ..., elementN : Any
配列の要素を指定します。
引数がない場合、長さ0の配列が作成されます。
引数が1つで数値である場合、①の呼び出し形式になります。
引数が1つで数値以外である場合、長さ1の配列が作成されます。
返値
配列オブジェクトを返します。
musicTypes = new Array(25); // 長さ25の配列
weeks = new Array("Mon","Tues", "Wed", "Thur", "Fri", "Sat", "Sun" );

concat 関数 JS1.2Array...

配列の連結

array.concat(arrayName2, arrayName3, ..., arrayNameN) : Array

引数
arrayName2...arrayNameN : Array
連結する配列
返値
連結された配列オブジェクトを返します。
解説
concat関数は元の配列は変更しません。
alpha=new Array("a","b","c")
numeric=new Array(1,2,3)
alphaNumeric=alpha.concat(numeric) // creates array ["a","b","c",1,2,3] 

num1=[123]
num2=[4,5,6]
num3=-789
nums=num1.concat(num2,num3) // creates array [123,4,5,6,-789]
参照

every 関数 JS1.6Array...

配列のすべての要素をテスト

array.every( callback[, thisObject] ) : Boolean

引数
callback : Function
各要素に対してテストする関数。
function callback(element, index, array) 形式の関数、elementは配列の要素、indexは配列のインデックス、arrayはeveryを呼び出す配列オブジェクト。
thisObject
callback を実行するときに this として使用するオブジェクト。
返値
配列の各要素について繰り返しcallback関数を呼び出し、callback関数がfalseを返せば呼び出し繰り返しを中断して、falseを返します。すべてcallback関数がtrueを返せば、trueを返します。配列が空ならtrueを返します。
// 配列のすべての要素の大きさをテストする
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed は false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed は true
参照

filter 関数 JS1.6Array...

テストの条件を満たす配列要素を選び出す

array.filter( callback[, thisObject] ) : Array

引数
callback : Function
各要素に対してテストする関数。
function callback(element, index, array) 形式の関数、elementは配列の要素、indexは配列のインデックス、arrayはfilterを呼び出す配列オブジェクト。
thisObject
callback を実行するときに this として使用するオブジェクト。
返値
配列の各要素についてcallback関数を呼び出してtrueを返した要素を選び出して作成された配列を返します。
// 配列の大きい要素を選び出す。
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var array = [12, 5, 8, 130, 44];
var filtered = array.filter(isBigEnough);
// filtered は [12, 130, 44]
// array は [12, 5, 8, 130, 44]変化なし

forEach 関数 JS1.6Array...

与えられた関数を、配列の各要素に対して一度ずつ実行

array.forEach( callback[, thisObject] )

callback : Function
各要素に対して処理する関数。
function callback(element, index, array) 形式の関数、elementは配列の要素、indexは配列のインデックス、arrayはforEachを呼び出す配列オブジェクト。
thisObject
callback を実行するときに this として使用するオブジェクト。
返値
なし
// 配列の内容を出力
function printElm(element, index, array) {
    print("[" + index + "] is " + element);
}
[2, 5, 9].forEach(printElm);
// 出力:
// [0] is 2
// [1] is 5
// [2] is 9
参照

indexOf 関数 JS1.6Array...

配列の中で与えられた要素を見つける

array.indexOf( searchElement[, fromIndex] ) : Integer

引数
searchElement
探す要素。
fromIndex
検索を始める添字。デフォルトは 0。負の数の場合、これは配列の終わりからのオフセットとみなされます。
返値
配列中で与えられた要素が見つけられた最初の添字を返します。もし存在しなければ -1 を返します。
解説
indexOf は searchElement と配列の要素を 厳密な同値 (三重イコール演算子 === で使われるのと同じ方法) を使って比較します。

===は型変換なしで比較、==は型変換してでも同じかどうかで比較判定します。
123==="123" ==> false
123=="123" ==> true
var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1
参照

isArray 関数 JS1.6Array...

配列かどうかの判定

Array.isArray( obj ) : Boolean

引数
obj
チェックしたいオブジェクト。
返値
objが配列 Arrayオブジェクトであれば trueを返し、そうでなければ falseを返します。
// empty, fastSmall, slow, slowSmall すべて Array.isArray(*) true
var empty = [];
var fastSmall = [1];
var slow = [];
slow.slow = 0;
var slowSmall = [];
slowSmall[999999] = 0;
slowSmall.length = 0;
var all = [empty, fastSmall, slow, slowSmall];
all.forEach(function(a) { alert(Array.isArray(a)); });
 
 
// 以下はすべてfalse
Array.isArray()
Array.isArray({})
Array.isArray(null)
Array.isArray(undefined)
Array.isArray(17)
Array.isArray("Array")
Array.isArray(Math.PI)
Array.isArray(true)
Array.isArray(false)

join 関数 JS1.1Array...

配列の要素を連結した文字列

array.join( [separator] ) : String

引数
separator : String
セパレータ文字 デフォルト値はカンマ
返値
配列要素をseparatorで連結した文字列を返します。
a = new Array("Wind","Rain","Fire")
myVar1=a.join()      // "Wind,Rain,Fire"
myVar2=a.join(", ")  // "Wind, Rain, Fire"
myVar3=a.join(" + ") // "Wind + Rain + Fire"
参照

lastIndexOf 関数 JS1.6Array...

配列の中で与えられた要素の最後の添字を見つける

array.lastIndexOf( searchElement[, fromIndex] : integer

引数
searchElement
探す要素。
fromIndex
検索を始める添字。デフォルトは 0。負の数の場合、これは配列の終わりからのオフセットとみなされます。
返値
配列中で与えられた要素が見つけられた最後の添字を返します。もし存在しなければ -1 を返します。
解説
indexOf は searchElement と配列の要素を 厳密な同値 (三重イコール演算子 === で使われるのと同じ方法) を使って比較します。

===は型変換なしで比較、==は型変換してでも同じかどうかで比較判定します。
123==="123" ==> false
123=="123" ==> true
var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
index = array.lastIndexOf(7);
// index is -1
index = array.lastIndexOf(2, 3);
// index is 3
index = array.lastIndexOf(2, 2);
// index is 0
index = array.lastIndexOf(2, -2);
// index is 0
index = array.lastIndexOf(2, -1);
// index is 3
参照

map 関数 JS1.6Array...

配列のすべての要素を処理して新しい配列を作成

array.map( callback[, thisObject] ) : Array

引数
callback : Function
現在の配列の要素から新しい配列の要素を生み出すための関数。
function callback(element, index, array) 形式の関数、elementは配列の要素、indexは配列のインデックス、arrayはmapを呼び出す配列オブジェクト。
thisObject
callback を実行するときに this として使用するオブジェクト。
返値
与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成して返します。
// 数値の配列を平方根の配列にマッピングする 
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots は [1, 2, 3] となる
// numbers は [1, 4, 9] のまま
参照

pop 関数 JS1.2Array...

配列の最後の要素の取り出しと削除

array.pop()

返値
配列の最後の要素を返します。
解説
配列の最後の要素を返し、最後の要素は取り除かれます。
myFish = ["angel", "clown", "mandarin", "surgeon"];
popped = myFish.pop();
alert( popped ); // surgeon
alert( myFish ); // angel, clown, mandarin
alert( myFish.length ); // 3
参照

push 関数 JS1.2, 1.3Array...

要素の追加

array.push(element1, ..., elementN) : Integer

引数
element1, ..., elementN : Any
追加したい要素
返値
追加後の配列の長さを返します。
解説
配列の最後に引数の要素を追加します。
myFish = ["angel", "clown"];
pushed = myFish.push("drum", "lion"); // 4
alert( myFish.length ); // 4
alert( myFish ); // angel, clown, drum, lion
参照

reduce 関数 JS1.8Array...

配列の(左から右へ)の値に対して処理を積み重ねる。

array.reduce( callback[, initialValue] )

引数
callback : Function
配列のおのおのの値に実行する関数。
function(previousValue, currentValue, index, array) 形式の関数
previousValueは最初の呼び出しでははinitialValueまたは最初の配列要素(例を参照)、次からは前の呼び出しに返した値
currentValueは配列の要素、indexは配列のインデックス、arrayはreduceを呼び出す配列オブジェクト。
initialValue
callback の最初の呼び出しのときに、最初の実引数として用いるためのオブジェクト。
返値
callback関数が最後に呼び出されたときに返す値がreduce関数の返す値です。
//(1) 初期値(initialValue)を与えなかった場合
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
});

// 最初の呼び出し
previousValue = 0, currentValue = 1, index = 1
// 2 回目の呼び出し
previousValue = 1, currentValue = 2, index = 2
// 3 回目の呼び出し
previousValue = 3, currentValue = 3, index = 3
// 4 回目の呼び出
previousValue = 6, currentValue = 4, index = 4

// array は、常に、reduce が呼び出された [0,1,2,3,4] というオブジェクトです。
// 戻り値: 10

//(2) 初期値(initialValue)を与えられた場合
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
}, 10);

// 最初の呼び出し
previousValue = 10, currentValue = 0, index = 0
// 2 回目の呼び出し
previousValue = 10, currentValue = 1, index = 1
// 3 回目の呼び出し
previousValue = 11, currentValue = 2, index = 2
// 4 回目の呼び出し
previousValue = 13, currentValue = 3, index = 3
// 5 回目の呼び出し
previousValue = 16, currentValue = 4, index = 4

// array は、常に、reduce が呼び出された [0,1,2,3,4] というオブジェクトです。
// 戻り値: 20
参照

reduceRight 関数 JS1.8Array...

配列の(右から左へ)の値に対して処理を積み重ねる。

array.reduceRight( callback[, initialValue] )

引数
callback
配列のおのおのの値に実行する関数。
function(previousValue, currentValue, index, array) 形式の関数
previousValueは最初の呼び出しでははinitialValueまたは最後の配列要素(例を参照)、次からは前の呼び出しに返した値
currentValueは配列の要素、indexは配列のインデックス、arrayはreduceRightを呼び出す配列オブジェクト。
initialValue
callback の最初の呼び出しのときに、最初の実引数として用いるためのオブジェクト。
返値
callback関数が最後に呼び出されたときに返す値がreduceRight関数の返す値です。
//(1) 初期値(initialValue)を与えなかった場合
[0,1,2,3,4].reduceRight(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
});

// 最初の呼び出し
previousValue = 4, currentValue = 3, index = 3
// 2 回目の呼び出し
previousValue = 7, currentValue = 2, index = 2
// 3 回目の呼び出し
previousValue = 9, currentValue = 1, index = 1
// 4 回目の呼び出
previousValue = 10, currentValue = 0, index = 0
// array は、常に、reduceRight が呼び出された [0,1,2,3,4] というオブジェクトです。
// 戻り値: 10

//(2) 初期値(initialValue)を与えられた場合
[0,1,2,3,4].reduceRight(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
}, 10);

// 最初の呼び出し
previousValue = 10, currentValue = 4, index = 4
// 2 回目の呼び出し
previousValue = 14, currentValue = 3, index = 3
// 3 回目の呼び出し
previousValue = 17, currentValue = 2, index = 2
// 4 回目の呼び出し
previousValue = 19, currentValue = 1, index = 1
// 5 回目の呼び出し
previousValue = 20, currentValue = 0, index = 0

// array は、常に、reduceRight が呼び出された [0,1,2,3,4] というオブジェクトです。
// 戻り値: 20
参照

reverse 関数 JS1.1Array...

配列要素を逆順に並べ替える

array.reverse()

myArray = new Array("one", "two", "three")
myArray.reverse() 
alert( myArray ); // three, two, one
参照

shift 関数 JS1.2Array...

配列の最初の要素の取り出しと削除

array.shift()

返値
配列の最初の要素を返します。
解説
配列の最初の要素を返し、最初の要素は取り除かれます。
myFish = ["angel", "clown", "mandarin", "surgeon"];
shifted = myFish.shift();
alert( shifted );  // angel
alert( myFish );   // clown, mandarin, surgeon
参照

slice 関数 JS1.2Array...

部分配列の取り出し

array.slice([begin],[end]) : Array

引数
begin : Integer
取り出しスタートインデックス。省略した場合、0
end : Integer
取り出し終了インデックス
省略した場合、arry.length
負の数であれば、arry.length + end
返値
取りだされた配列オブジェクトを返します。
myFish = ["angel", "clown", "mandarin", "surgeon"];
slice1 = myFish.slice(1,3); // ["clown", "mandarin"]
slice2 = myFish.slice(1);   // ["clown", "mandarin", "surgeon"]
slice3 = myFish.slice(1,-2);// ["clown"]

splice 関数 JS1.2, 1.3Array...

配列から要素の追加と削除

array.splice(index, howMany, [element1][, ..., elementN]) : Array or Any
array.splice(index, [howMany, [element1][, ..., elementN]]) : Array or Any

引数
index : Integer
配列を変化させ始める要素のインデックス。
howMany : Integer
配列から取り除く古い要素の数を示す整数。howMany が 0 の場合、どの要素も取り除かれません。この場合、少なくとも 1 つの新しい要素を指定する必要があります。もし howMany 引数が何も指定されなかったら (上の 2 つ目の構文。非標準)、index 以降の全ての要素が取り除かれます。
返値
splice メソッドは取り除かれた要素を含む配列を返します。要素を 1 つだけ取り除いた場合、1 要素だけの配列を返します。
var myFish = ["angel", "clown", "mandarin", "surgeon"];
print("myFish: " + myFish); //myFish: angel,clown,mandarin,surgeon

var removed = myFish.splice(2, 0, "drum");
print("1 つ追加した後: " + myFish); //1 つ追加した後: angel,clown,drum,mandarin,surgeon
print("取り除いたのは: " + removed); //取り除いたのは:

removed = myFish.splice(3, 1);
print("1 つ取り除いた後: " + myFish); //1 つ取り除いた後: angel,clown,drum,surgeon
print("取り除いたのは: " + removed); //取り除いたのは: mandarin

removed = myFish.splice(2, 1, "trumpet");
print("1 つ置き換えた後: " + myFish); //1 つ置き換えた後: angel,clown,trumpet,surgeon
print("取り除いたのは: " + removed); //取り除いたのは: drum

removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
print("2 つ置き換えた後: " + myFish); //2 つ置き換えた後: parrot,anemone,blue,trumpet,surgeon
print("取り除いたのは: " + removed); //取り除いたのは: angel,clown

some 関数 JS1.6Array...

テストに合格する要素が配列の中にあるかどうかをテスト

array.some( callback[, thisObject] ) : Boolean

引数
callback : Function
各要素に対してテストする関数。
function callback(element, index, array) 形式の関数、elementは配列の要素、indexは配列のインデックス、arrayはeveryを呼び出す配列オブジェクト。
thisObject
callback を実行するときに this として使用するオブジェクト。
返値
配列の各要素について繰り返しcallback関数を呼び出し、callback関数がtrueを返せば呼び出し繰り返しを中断して、trueを返します。すべてcallback関数がfalseを返せば、falseを返します。配列が空ならfalseを返します。
// 配列のすべての要素の大きさをテストする
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed は false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed は true
参照

sort 関数 JS1.1, 12.Array...

配列の並べ替え

array.sort( [compareFunction] )

引数
compareFunction : Function
要素比較する関数を指定します。
省略した場合、要素を文字列に変換して辞書式順序で比較します。

関数の仕様は次のようになります。 function compareFunction(a, b) { // 大小同の判定基準を自由 if (a が b より小) return -1 if (a が b より大) return 1 // a と b が同じ return 0 }
解説
実行後、配列要素の順序が変わります。
var nums = new Array(234, 12, 43);
nums.sort(); // [12, 234, 43]

function compare( a, b )
{
   return a - b;
}
nums.sort(); // [12, 43, 234]
参照

toSource 関数 JS1.3 (非推奨)Array...

配列のソース文字列を取得

array.toSource() : String

返値
配列のソース文字列を返します。
alpha = new Array("a", "b", "c");
alert( alpha.toSource() ); // ["a", "b", "c"] 
参照

toString 関数 JS1.1Array...

配列の文字列化

array.toString( ) : String

返値
配列の各要素を文字列化し,それらをcamma(,)でつないだ文字列を返します。
var monthNames = new Array("Jan","Feb","Mar","Apr");
myVar=monthNames.toString();
alert( myVar ); // "Jan,Feb,Mar,Apr"
参照

toLocaleString 関数 JS1.0Array...

配列をローカルフォーマットで文字列化

array.toLocaleString() : String

返値
配列の各要素をローカライズされた文字列化し,それらをcamma(,)でつないだ文字列を返します。

unshift 関数 JS1.2Array...

配列の先頭に要素を追加

array.unshift(element1,..., elementN) : Integer

引数
element1,..., elementN : Any
追加する要素
返値
先頭に追加した後の配列の長さを返します。
解説
配列の先頭に要素が追加され、その長さが追加分増加します。
myFish = ["angel", "clown"];
unshifted = myFish.unshift("drum", "lion");
alert( myFish );    // drum, lion, angel, clown
alert( unshifted ); // 4
参照

valueOf 関数 JS1.1Array...

配列のそのものを取得

array.valueOf() : Array

返値
自分自身を返します。
n = ["a","b"];
m = n.valueOf();
m[1] = 1234;
alert( n [1] ); // 1234

ArrayBuffer, {Typed}Array クラス ...
  {Typed}Array = Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray

 ArrayBuffer,{Typed}Arrayクラスはbinaryデータを柔軟かつ効果的に扱えるメカニズムを提供します。
 ArrayBufferは一塊のbainaryデータを表現するクラスで、そのbainaryデータへのアクセス機能は {Typed}Arrayクラスが担当します。ここで、{Typed}は型名が当てはめられ、Float32, Float64, Int16, Int32, Int8, Uint16, Uint32, Uint8 のいずれかになります。

 いくつか使用例を掲示します。
例1. サイズ4 Int16 配列
var array = new Int16Array(4);  // var buffer = new ArrayBuffer(4*2); var array = Int16Array(buffer); と同じ
for (var i=0; i<4; i++) {
  array[i] = 2*i;
}
print( array[3] ); // 6
 
例2. 同じ8バイトのメモリーを Int16配列とInt8配列でアクセス
var buffer = new ArrayBuffer(8);
var array16 = new Int16Array(buffer); // サイズ4の Int16配列
var array8  = new Int8Array (buffer); // サイズ8の Int8 配列
for (var i=0; i<array16.length; i++) {
  array16[i] = 2*i;
}
for (var i=0; i<array8.length; i++) {
  outstr( array8[i], " " );
}
/*出力結果
   0  0  2  0  4  0  6  0  
*/
 
例3. 構造体データ
/*
// C言語構造体
struct someStruct {
  unsigned long id;   //  4 bytes
  char username[16];  // 16 bytes
  float amountDue;    //  4 bytes
};
*/
var file = new Stream("test.dat");
var buffer = file.read(24);     // buffer : ArrayBuffer(24)

var idView = new Uint32Array(buffer, 0, 1);          // buffer.id
var usernameView = new Uint8Array(buffer, 4, 16);    // buffer.username
var amountDueView = new Float32Array(buffer, 20, 1); // buffer.amountDue
  
BYTES_PER_ELEMENT定数 配列要素のバイトサイズ
bufferプロパティ 型配列のバッファー
byteLengthプロパティ バイトサイズ *
byteOffsetプロパティ バイト単位のオフセット位置
lengthプロパティ 配列の長さ
ArrayBuffer,
Float32Array, Float64Array,
Int16Array, Int32Array, Int8Array,
Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray
コンストラクター
配列オブジェクトの作成
Uint8ArrayとUint8ClampedArrayの違い
*
set関数 代入関数
subarray関数 部分配列を取り出す関数
* : ArrayBufferクラスにあるプロパティと関数です。
{Typed}Arrayはこのリストにあるものをすべてサポートしてます。

Uint8ArrayとUint8ClampedArrayの違い :
共に8ビット符号なし整数(値は0-255の範囲)の配列を表現するクラスですが、範囲外の値を設定する処理が異なります。
Uint8Arrayでは8ビットを超えるビットは除き、Uint8ClampedArrayでは0-255の範囲に切り詰めて(最小値(0)または最大値(255))、値を設定します。
また少数値の設定については、Uint8Arrayでは少数点以下は切り捨てられ、Uint8ClampedArrayでは四捨五入されます。

BYTES_PER_ELEMENT 定数ArrayBuffer,{Typed}Array...

配列要素のバイトサイズ

typedarray.BYTES_PER_ELEMENT : Number [ReadOnly]
TypedArray.BYTES_PER_ELEMENT : Number [ReadOnly]

解説
各{typed}Arrayの要素バイトサイズは以下のようになります。
Float32Array4
Float64Array8
Int16Array2
Int32Array4
Int8Array1
Uint16Array2
Uint32Array4
Uint8Array1
Uint8ClampedArray1

print( Float64Array.BYTES_PER_ELEMENT ); // 8

var array = new Float32Array(4);
print( array.BYTES_PER_ELEMENT ); // 4
  

buffer プロパティArrayBuffer,{Typed}Array...

型配列のバッファー

typedarray.buffer : ArrayBuffer [ReadOnly]

解説
型配列クラス{typed}Arrayのオブジェクトは、操作アクセスするArrayBufferオブジェクトを持ちます。そのrrayBufferオブジェクトをbufferプロパティで取得できます。
var buffer = new ArrayBuffer(32);
var float64array = new Float64Array(buffer);
var int32array   = new Int32Array(buffer,16);

print( float64array.buffer==buffer ); // true
print( int32array  .buffer==buffer ); // true
  

byteLength プロパティArrayBuffer,{Typed}Array...

バイトサイズ

arraybuffer.byteLength : Integer [ReadOnly]
typedarray .byteLength : Integer [ReadOnly]

解説
arraybuffer.byteLength は、ArrayBuuferオブジェクトのメモリの占有バイト数です。
typedarray .byteLength は、{Typed}Arrayオブジェクトが操作できるメモリのバイト数です。
var buffer = new ArrayBuffer(32);
var float64array = new Float64Array(buffer);
var int32array   = new Int32Array(buffer,20);

print( float64array.byteLength ); // 32
print( int32array  .byteLength ); // 12
  

byteOffset プロパティArrayBuffer,{Typed}Array...

バイト単位のオフセット位置

typedarray.byteOffset : Integer [ReadOnly]

解説
typedarray.byteOffsetは、{Typed}Arrayオブジェクトtypedarrayがアクセスできるメモリー領域を(ArrayBuuferオブジェクトの)先頭からのオフセット位置を返します。
var buffer = new ArrayBuffer(32);
var float64array = new Float64Array(buffer);
var int32array   = new Int32Array(buffer,20);

print( float64array.byteOffset ); // 0
print( int32array  .byteOffset ); // 20
  

length プロパティArrayBuffer,{Typed}Array...

配列の長さ

typedarray.length : Integer [ReadOnly]

解説
typedarray.lengthは、{Typed}Arrayオブジェクトtypedarrayがアクセスできる配列の長さを返します。
var uint16array = new Uint16Array(12);

var buffer = new ArrayBuffer(32);
var float64array = new Float64Array(buffer);
var int32array   = new Int32Array(buffer,20);
var int8array   = new Int8Array(buffer,10,7);

print( uint16array.length ); // 12

print( float64array.length ); // 4
print( int32array.length );   // 3
print( int8array.length );    // 7

print( int8array[6] );    // 0
print( int8array[7] );    // unsigned
  

ArrayBuffer, {Typed}Array コンストラクター ArrayBuffer,{Typed}Array...
  {Typed}Array = Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray

メモリバッファ, 型配列オブジェクトの作成

new ArrayBuffer( length ) : ArrayBuffer
new {Typed}Array( length ) : {Typed}Array
new {Typed}Array( typedarray ) : {Typed}Array
new {Typed}Array( array ) : {Typed}Array
new {Typed}Array( buffer[[, byteOffset], length] ) : {Typed}Array
  {Typed}Array = Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray

引数
length : Integer
バッファサイズ、配列の長さを指定します。 0~pow(2,32)-1=4,294,967,295
typedarray : {Typed}Array
型配列オブジェクト。
array : Object
Arrayオブジェクトやargumentsなどの lengthプロパティをもつオブジェクト。
buffer : ArrayBuffer
バッファオブジェクト。
byteOffset : Integer
バイトオフセット。
返値
型配列オブジェクトを返します。
解説
コンストラクタ呼び出しで作成される型配列オブジェクトは以下のようになります。
new ArrayBuffer( length ) バッファサイズlengthのメモリバッファを作成
new {Typed}Array( length ) 長さlengthの型配列を作成
new {Typed}Array( typedarray ) 型配列typedarrayの各要素を{Typed}型へ変換した同じ長さの型配列を作成
new {Typed}Array( array ) array[i] (i=0~array.length-1)を{Typed}型へ変換した同じ長さの型配列を作成
new {Typed}Array( buffer ) メモリ内容bufferをもつ、長さbuffer.byteLength/{Typed}Array.BYTES_PER_ELEMENT の型配列を作成
buffer.byteLength/{Typed}Array.BYTES_PER_ELEMENTは >=0, 整数でなければいけない。
new {Typed}Array( buffer, byteOffset ) オフセットbyteOffsetからのメモリ内容bufferをもつ、長さ(buffer.byteLength-buffer.byteOffset)/{Typed}Array.BYTES_PER_ELEMENT の型配列を作成
(buffer.byteLength-buffer.byteOffset)/{Typed}Array.BYTES_PER_ELEMENTは >=0, 整数でなければいけない。
new {Typed}Array( buffer, byteOffset, length ) オフセットbyteOffsetからのメモリ内容bufferをもつ、長さlength の型配列を作成
0<=length , length<=(buffer.byteLength-buffer.byteOffset)/{Typed}Array.BYTES_PER_ELEMENT でなければいけない。
//----
var a = new Int16Array(8);
print( a.length ); // 8

//----
var buffer = new ArrayBuffer(24);
var a = new Int16Array(buffer);	// must be buffer.byteLength%2==0
print( a.length ); // 12

//----
var o = [10,11,12];
var a = new Int16Array(o);
print(a.length); // 3
print(a[2]); // 12
print(a[1]); // 11
print(a[100]); // undefined

//----
var o = {length:8, 0:10, 2:12};
var a = new Int16Array(o);
print(a.length); // 8
print(a[2]); // 12
print(a[1]); // 0
print(a[7]); // 0
print(a[100]); // undefined

var b = new Int16Array(a);	// a:TypedArray
print(b.length); // 8
print(b[2]); // 12
print(b[1]); // 0
print(b[7]); // 0
print(b[100]); // undefined

//----
var buffer = new ArrayBuffer(24);
var a = new Int16Array(buffer,12);
var b = new Int16Array(buffer,12,2);
a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4;
print(b[0]); // 1
print(b[1]); // 2
print(b[2]); // undefined
  

set 関数 ArrayBuffer,{Typed}Array...

代入関数

typedarray.set(array, [offset]) : void

引数
array : Object
lengthプロパティをもつオブジェクト
offset : Integer
代入先typedarrayの最初のインデックス。省略した場合 0
解説
typedarray.set(array, offset); は次のプログラム実行と同じです。
for (var i=0; i<array.length; i++) typedarray[offset+i] = array[i];

offset + array.length > typedarray.length となる場合、Errorが発生します。
var o = {length:8, 0:10, 2:12};
var a = new Int16Array(24);

a.set(o,16);

print(a[15]); // 0
print(a[16]); // 10
print(a[17]); // 0
print(a[18]); // 12
print(a[19]); // 0

a.set(o,17);	// Error: invalid arguments
  

subarray 関数 ArrayBuffer,{Typed}Array...

部分配列を取り出す

typedarray.subarray(begin, [end]) : TypedArray

引数
begin : Integer
取り出しのスタートインデックス
end : Integer
取り出しのラストインデックスの次。省略した場合、配列の最後まで
返値
部分配列のオブジェクトを返します。
var a = new Int16Array(24);
for (var i=0; i<24; i++) {
  a[i] = 10+i;
}

var b = a.subarray(20,24);
print(b.length); // 4
print(b[0]); // 30
print(b[1]); // 31
print(b[2]); // 32
print(b[3]); // 33
print(b[4]); // undefined
b[0] = -30;
print(a[20]); // -30
  

Boolean クラス ...

Boolean値のラッパークラスです。使われることはほとんどありません。

constructorプロパティ オブジェクトのプロトタイプを生成する関数
Booleanコンストラクター Booleanオブジェクトの作成
toSource関数 Booleanオブジェクトのソース文字列を取得
toSource関数 Booleanオブジェクトの文字列化
valueOf関数 Booleanオブジェクトの基本データ値を取得

constructor プロパティ JS1.1Boolean...

オブジェクトのプロトタイプを生成する関数

boolean.constructor : Object

a = true; // a = new Boolean("");
alert( a.constructor==Boolean ); //true
 

Boolean コンストラクター JS1.1Boolean...

Booleanオブジェクトの作成

new Boolean(value) : Boolean object

引数
value : Any
Booleanオブジェクトを初期化するための値。 省略または 0, -0, null, false, NaN, undefined, あるいは 空文字列"" が渡された場合、falseで初期化されたBooleanオブジェクトが作成されます。
その他の値が渡された場合、trueで初期化されたBooleanオブジェクトが作成されます。
返値
Booleanオブジェクトを返します。
解説
Boolean値からこのBooleanクラスの関数を呼び出すとき、 このコンストラクターで自動的にBooleanオブジェクトに変換してから呼び出します。
true.toSource() // == new Boolean(true) . toSource()

toSource 関数 JS1.3 (非標準)Boolean...

Booleanオブジェクトのソース文字列を取得

boolean.toSource() : String

返値
Booleanオブジェクトのソース文字列を返します。
trueobj = new Boolean(true);
alert( trueobj.toSource() );  // (new Boolean(true))
falseobj = new Boolean("");
alert( falseobj.toSource() );  // (new Boolean(false))
参照

toString 関数 JS1.1Boolean...

Booleanオブジェクトの文字列化

boolean.toString( ) : String

返値
trueから作成されたBooleanオブジェクトなら"true"を返し、
falseから作成されたものなら"false"を返します。
trueobj = new Boolean(true);
alert( trueobj.toString() );  // true
falseobj = new Boolean("");
alert( falseobj.toString() );  // false
参照

valueOf JS1.1 (非標準)Boolean...

Booleanオブジェクトの基本データ値を取得

boolean.valueOf() : Boolean

返値
Booleanオブジェクト作成の値を返します。
trueobj = new Boolean(true);
alert( trueobj.valueOf() );  // true
falseobj = new Boolean("");
alert( falseobj.valueOf() );  // false
参照

Date クラス ...

日付と時間を扱うクラスです。

constructorプロパティ オブジェクトのプロトタイプを生成する関数
Dateコンストラクター Dateオブジェクトの作成
getDate関数 日を取得
getDay関数 曜日を取得
getFullYear関数 西暦年数を取得
getHours関数 時間を取得
getMilliseconds関数 ミリ秒を取得
getMinutes関数 分を取得
getMonth関数 月を取得
getSeconds関数 月を取得
getTime関数 1970年 1月 1日 00:00:00 からのミリ秒を取得
getTimezoneOffset関数 時間単位情報(分単位)を取得
getUTCDate関数 世界標準時(UTC)での日を取得
getUTCDay関数 世界標準時(UTC)での日を取得
getUTCFullYear関数 世界標準時(UTC)での西暦年数を取得
getUTCHours関数 世界標準時(UTC)での時間を取得
getUTCMilliseconds関数 世界標準時(UTC)でのミリ秒を取得
getUTCMinutes関数 世界標準時(UTC)での分を取得
getUTCMonth関数 世界標準時(UTC)での月を取得
getUTCSeconds関数 世界標準時(UTC)での秒を取得
getYear関数 1900年からの差分年数を取得
nowクラス関数 現在日時に対応する数値を取得
parseクラス関数 日時文字列を解析して1970年 1月 1日 00:00:00(local)からのミリ秒を取得
setDate関数 日付けをセット
setFullYear関数 西暦年数を変更
setHours関数 時間を変更
setMilliseconds関数 ミリ秒を変更
setMinutes関数 分を変更
setMonth関数 月を変更
setSeconds関数 秒を変更
setTime関数 1970年 1月 1日 00:00:00 からのミリ秒を変更
setUTCDate関数 世界標準時(UTC)での日付けを変更
setUTCFullYear関数 世界標準時(UTC)での西暦年数を変更
setUTCHours関数 世界標準時(UTC)での時間を変更
setUTCMilliseconds関数 世界標準時(UTC)でのミリ秒を変更
setUTCMinutes関数 世界標準時(UTC)での分を変更
setUTCMonth関数 世界標準時(UTC)での月を変更
setUTCSeconds関数 世界標準時(UTC)での秒を変更
setYear関数 1900年からの差分年数を変更
toDateString関数 日時の「日付」部を文字列へ変換
toJSON関数 DateオブジェクトをJSON形式文字列へ変換
toGMTString関数 GMTフォーマットで文字列化
toLocaleDateString関数 日時の「日付」部をローカライズした文字列へ変換
toLocaleFormat関数 日時を指定書式の文字列に変換
toLocaleString関数 ローカルフォーマットで文字列化
toLocaleTimeString関数 日時の「時刻」部をローカライズした文字列へ変換
toSource関数 Dateオブジェクトのソースコード
toString関数 Dateオブジェクトを文字列化
toTimeString関数 日時の「時刻」部を文字列へ変換
toUTCString関数 UTC(世界標準時刻)フォーマットで文字列化
UTCクラス関数 1970年 1月 1日 00:00:00(UTC) からのミリ秒を取得
valueOf関数 Dataオブジェクトの基本データ値を取得

constructor プロパティ JS1.1Date...

オブジェクトのプロトタイプを生成する関数

func.constructor : Object

dt = new Date( "2/16/2004 12:45:30");
alert( dt.constructor==Date );  // true
 

Date コンストラクター JS1.0Date...

Dateオブジェクトの作成

① new Date() : Date
② new Date(milliseconds) : Date
③ new Date(dateString) : Date
④ new Date(yr_num, mo_num, day_num[, hr_num, min_num, sec_num, ms_num]) : Date

引数
milliseconds : Integer
1970年 1月 1日 00:00:00(UTC) からのミリ秒
dateString : String
日付を表す文字列
yr_num, mo_num, day_num : Integer
年、月、日
月は0~11で指定してください。0は1月 11は12月となってます。
hr_num, min_num, sec_num, ms_num : Integer
時、分、秒、ミリ秒。 省略した場合 0と渡したことになります。
返値
作成されたDateオブジェクトを返します。
引数を省略した場合、現在の日付と時間でDateオブジェクトを作成します。
解説
Dateは1970年 1月 1日 00:00:00(UTC) からのミリ秒で測られます。
Dateの範囲は、1970年 1月 1日 00:00:00(UTC) から100,000,000日から-100,000,000日までです。
年は西暦で与え、98年と省略するのでなく1998年として与えて下さい。
//2004年5月16日0時0分0秒
dt = new Date(2004, 4, 16);

//2004年5月16日12時45分30秒
dt = new Date(2004, 1, 16, 12, 45, 30);
dt = new Date("Feb 16, 2004 12:45:30");
dt = new Date("February 16, 2004 12:45:30");
dt = new Date( "2/16/2004 12:45:30");

//現在の日付と時刻
dd = new Date();
  

getDate 関数 JS1.1Date...

日を取得

date.getDate() : Integer

返値
Dateオブジェクトの日を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getDate() );  // 16
参照

getDay 関数 JS1.0Date...

曜日を取得

date.getDay() : Integer

返値
Dateオブジェクトの曜日を返します。日曜日(0)~土曜日(6)
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getDay() );  // 1=月曜日
参照

getFullYear 関数 JS1.3Date...

西暦年数を取得

date.getFullYear() : Integer

返値
Dateオブジェクトの西暦年数を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getFullYear() );  // 2004
参照

getHours 関数 JS1.0Date...

時間を取得

date.getHours() : Integer

返値
Dateオブジェクトの時間を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getHours() );  // 12
参照

getMilliseconds 関数 JS1.3Date...

ミリ秒を取得

date.getMilliseconds() : Integer

返値
Dateオブジェクトのミリ秒を返します。
dt = new Date(2004, 1, 16, 12, 45, 30, 123);
alert( dt.getMilliseconds() );  // 123
参照

getMinutes 関数 JS1.0Date...

分を取得

date.getMinutes() : Integer

返値
Dateオブジェクトの分を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getMinutes() );  // 45
参照

getMonth 関数 JS1.0Date...

月を取得

date.getMonth() : Integer

返値
Dateオブジェクトの月-1を返します。0は1月、11は12月。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getMonth() );  // 1=2月
参照

getSeconds 関数 JS1.0Date...

秒を取得

date.getSeconds() : Integer

返値
Dateオブジェクトの秒を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getSeconds() );  // 30
参照

getTime 関数 JS1.0Date...

1970年 1月 1日 00:00:00 からのミリ秒を取得

date.getTime() : Integer

返値
Dateオブジェクトの値を1970年 1月 1日 00:00:00 からのミリ秒で返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getTime() );  // 1,076,903,130,000
参照

getTimezoneOffset 関数 JS1.0Date...

時間単位情報(分単位)を取得

date.getTimezoneOffset() : Integer

返値
日本の場合には-540(-9時間)を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getTimezoneOffset() );  // -540

getUTCDate 関数 JS1.3Date...

世界標準時(UTC)での日を取得

date.getUTCDate() : Integer

返値
Dateオブジェクトの世界標準時(UTC)でのを返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCDate() );  // 16
参照

getUTCDay 関数 JS1.3Date...

世界標準時(UTC)での曜日を取得

date.getUTCDay() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での曜日を返します。日曜日(0)~土曜日(6)
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCDay() );  // 1=月曜日
参照

getUTCFullYear 関数 JS1.3Date...

世界標準時(UTC)での西暦年数を取得

date.getUTCFullYear() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での西暦年数を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCFullYear() );  // 2004
参照

getUTCHours 関数 JS1.3Date...

世界標準時(UTC)での時間を取得

date.getUTCHours() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での時間を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCHours() );  // 3
参照

getUTCMilliseconds 関数 JS1.3Date...

世界標準時(UTC)でのミリ秒を取得

date.getUTCMilliseconds() : Integer

返値
Dateオブジェクトの世界標準時(UTC)でのミリ秒を返します。
dt = new Date(2004, 1, 16, 12, 45, 30, 123);
alert( dt.getUTCMilliseconds() );  // 123
参照

getUTCMinutes 関数 JS1.3Date...

世界標準時(UTC)での分を取得

date.getUTCMinutes() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での分を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCMinutes() );  // 45
参照

getUTCMonth 関数 JS1.3Date...

世界標準時(UTC)での月を取得

date.getUTCMonth() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での月-1を返します。0は1月、11は12月。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCMonth() );  // 1=2月
参照

getUTCSeconds 関数 JS1.3Date...

世界標準時(UTC)での秒を取得

date.getUTCSeconds() : Integer

返値
Dateオブジェクトの世界標準時(UTC)での秒を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getUTCSeconds() );  // 30
参照

getYear 関数 JS1.0 (非推奨)Date...

1900年からの差分年数を取得

date.getYear() : Integer

返値
Dateオブジェクトの1900年からの差分年数を返します。
解説
JavaScript1.2以降では、このメソッドではなくgetFullYear()メソッドを使うことが推奨されています。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.getYear() );  // 104
参照

now クラス関数 JS1.0 (非推奨)Date...

現在日時に対応する数値を取得

Date.now() : Integer

返値
現在日時に対応する数値を返します。

parse クラス関数 JS1.0Date...

日時文字列を解析して1970年 1月 1日 00:00:00(local)からのミリ秒を取得

Date.parse(dateString) : Integer

引数
dateString : String
日時文字列
返値
日時文字列を解析して1970年 1月 1日 00:00:00(local)からのミリ秒を返します。
time = Date.parse( "2/16/2004 12:45:30")
alert( time );  // 1076903130000
参照
UTC

setDate 関数 JS1.0Date...

日付けをセット

date.setDate(dayValue)

引数
dayValue : Integer
1~31日
dt = new Date( "2/16/2004 12:45:30");
dt.setDate(24);
alert( dt.getDate() );  // 24
参照

setFullYear 関数 JS1.3Date...

西暦年数を変更

date.setFullYear(yearValue[, monthValue, dayValue])

引数
yearValue : Integer
西暦年数
monthValue : Integer
月 0~11  0は1月、11は12月
dayValue : Integer
日 1~31 
dt = new Date( "2/16/2004 12:45:30");
dt.setFullYear(2005);
alert( dt.getFullYear() );  // 2005
参照

setHours 関数 JS1.0, 1.3Date...

時間を変更

date.setHours(hoursValue[, minutesValue, secondsValue, msValue])

引数
hoursValue : Integer
時間 0~23
minutesValue : Integer
分 0~59
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setHours(7);
alert( dt.getHours() );  // 7
参照

setMilliseconds 関数 JS1.3Date...

ミリ秒を変更

date.setMilliseconds(millisecondsValue)

引数
millisecondsValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setMilliseconds(100);
alert( dt.getMilliseconds() );  // 100
参照

setMinutes 関数 JS1.0, 1.3Date...

分を変更

date.setMinutes(minutesValue[, secondsValue, msValue])

引数
minutesValue : Integer
分 0~59
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setMinutes(15);
alert( dt.getMinutes() );  // 15
参照

setMonth 関数 JS1.0, 1.3Date...

月を変更

date.setMonth(monthValue[, dayValue])

引数
monthValue : Integer
月 0~11  0は1月、11は12月
dayValue : Integer
日 1~31 
dt = new Date( "2/16/2004 12:45:30");
dt.setMonth(6);
alert( dt.getMonth() );  // 6=7月
参照

setSeconds 関数 JS1.0, 1.3Date...

秒を変更

date.setSeconds(secondsValue[, msValue])

引数
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setSeconds(15);
alert( dt.getSeconds() );  // 15
参照

setTime 関数 JS1.0Date...

1970年 1月 1日 00:00:00 からのミリ秒を変更

date.setTime(timevalue)

引数
timevalue : Integer
1970年 1月 1日 00:00:00 からのミリ秒
参照

setUTCDate 関数 JS1.3Date...

世界標準時(UTC)での日付けを変更

date.setUTCDate(dayValue)

引数
dayValue : Integer
1~31日
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCDate(24);
alert( dt.getUTCDate() );  // 24
参照

setUTCFullYear 関数 JS1.3Date...

世界標準時(UTC)での西暦年数を変更

date.setUTCFullYear(yearValue[, monthValue, dayValue])

引数
yearValue : Integer
西暦年数
monthValue : Integer
月 0~11  0は1月、11は12月
dayValue : Integer
日 1~31 
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCFullYear(2005);
alert( dt.getUTCFullYear() );  // 2005
参照

setUTCHours 関数 JS1.3Date...

世界標準時(UTC)での時間を変更

date.setUTCHours(hoursValue[, minutesValue, secondsValue, msValue])

引数
hoursValue : Integer
時間 0~23
minutesValue : Integer
分 0~59
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCHours(7);
alert( dt.getUTCHours() );  // 7
参照

setUTCMilliseconds 関数 JS1.3Date...

世界標準時(UTC)でのミリ秒を変更

date.setUTCMilliseconds(millisecondsValue)

引数
millisecondsValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCMilliseconds(100);
alert( dt.getUTCMilliseconds() );  // 100
参照

setUTCMinutes 関数 JS1.3Date...

世界標準時(UTC)での分を変更

date.setUTCMinutes(minutesValue[, secondsValue, msValue])

引数
minutesValue : Integer
分 0~59
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCMinutes(15);
alert( dt.getUTCMinutes() );  // 15
参照

setUTCMonth 関数 JS1.3Date...

世界標準時(UTC)での月を変更

date.setUTCMonth(monthValue[, dayValue])

引数
monthValue : Integer
月 0~11  0は1月、11は12月
dayValue : Integer
日 1~31 
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCMonth(6);
alert( dt.getUTCMonth() );  // 6=7月
参照

setUTCSeconds 関数 JS1.3Date...

世界標準時(UTC)での秒を変更

date.setUTCSeconds(secondsValue[, msValue])

引数
secondsValue : Integer
秒 0~59
msValue : Integer
ミリ秒 0~999
dt = new Date( "2/16/2004 12:45:30");
dt.setUTCSeconds(15);
alert( dt.getUTCSeconds() );  // 15
参照

setYear 関数 JS1.0, 1.3(非推奨)Date...

1900年からの差分年数を変更

date.setYear(yearValue)

引数
yearValue : Integer
1900年からの差分年数
解説
代わりに setFullYear() を使うこと。
dt = new Date( "2/16/2004 12:45:30");
dt.setYear(105); // ? dt.setYear(2005);
alert( dt.getYear() );  // 105
参照

toDateString 関数 JS1.0Date...

日時の「日付」部を文字列へ変換

date.toDateString() : String

返値
date日時の「日付」部だけを文字列に変換して返します。
var dt = new Date("2/16/2004 12:45:30");
alert(dt);  // Mon Feb 16 2004 12:45:30 GMT+0900
alert(dt.toDateString()); // Mon Feb 16 2004

toJSON 関数 JS1.8.5Date...

DateオブジェクトをJSON形式文字列へ変換

date.toJSON() : String

返値
dateをJSON形式文字列へ変換して返します。
var curDate = new Date();
var jsonDate = curDate.toJSON();
 
print("JSON string: " + jsonDate); // "JSON string: 2011-04-03T11:45:57.182Z"
 
var backToDate = new Date(jsonDate);

toGMTString 関数 JS1.0, 1.3(非推奨)Date...

GMTフォーマットで文字列化

date.toGMTString() : String

返値
日付け・時刻をGMTフォーマットで文字列化したものを返します。
解説
toGMTString()は関数は使われなくなるので、toUTCString()に取り換えて下さい。
参照

toLocaleDateString 関数 JS1.0Date...

日時の「日付」部をローカライズした文字列へ変換

date.toLocaleDateString() : String

返値
date日時の「日付」部だけをローカライズ文字列に変換して返します。
参照

toLocaleFormat 関数 JS1.6(非標準)Date...

日時を指定書式の文字列に変換

date.toLocaleFormat( format ) : String

引数
format : String
書式文字列。
返値
書式文字列にしたがって日時の変換した文字列を返します。
解説
書式
%a曜日の省略名
%A曜日の正式名
%b月の省略名
%B月の正式名
%cロケールに応じた日付と時間の表現
%d10進数で表す月の日付(01-31)
%D%m/%d/%yと同じ
%e月単位の日付を10進数で表したもの。
日付が1桁の場合は、前に 空白を一つ付けます。(' 1'~'31')
%h%bと同じ
%H24時間表記の時間(00-23)
%I12時間表記の時間(00-12)
%j10進数で表す年頭からの日数(001-366)
%m10進数で表す月(01-12)
%M10進数で表す分(00-59)
%p現在のロケールのAM/PM
%S10進数で表す秒
%U10進数で表す週の通し番号。日曜日を週の最初の日(00-53)
%w10進数で表す曜日。日曜日を0(0-6)
%W10進数で表す週の通し番号。月曜日を週の最初の日(00-53)
%x現在のロケールの日付表示
%X現在のロケールの時刻表示
%y10進数で表す西暦の下2桁(00-99)
%Y10進数で表す4桁の西暦
%z時間帯の名前または省略名(JSTなど)
時間帯がわからない場合には文字を入れない。
%%パーセント記号
参照

toLocaleString 関数 JS1.0Date...

ローカルフォーマットで文字列化

date.toLocaleString() : String

返値
日付け・時刻をローカルフォーマットで文字列化したものを返します。
解説
日付け・時刻のローカルフォーマットはOSやその設定で決まります。
参照

toLocaleTimeString 関数 JS1.0Date...

日時の「時刻」部をローカライズした文字列へ変換

date.toLocaleTimeString() : String

返値
日時の「時刻」部をローカライズした文字列を返します。
参照

toSource 関数 JS1.3(非標準)Date...

Dateオブジェクトのソースコード

date.toSource() : String

返値
Dateオブジェクトを作成するソースコードを返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.toSource() );  // (new Date(1076903130000))
参照

toString 関数 JS1.0Date...

Dateオブジェクトを文字列化

date.toString() : String

返値
Dateオブジェクトを文字列化したものを返します。
解説
JavaScriptはDateオブジェクトを文字列化しなければならないときや文字列として連結するとき、
このtoString()関数を呼び出します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.toString() );  // Mon Feb 16 2004 12:45:30 GMT+0900
参照

toTimeString 関数 Date...

日時の「時刻」部を文字列へ変換

date.toTimeString() : String

返値
date日時の「時刻」部だけを文字列に変換して返します。

toUTCString 関数 JS1.3Date...

UTC(世界標準時刻)フォーマットで文字列化

date.toUTCString() : String

返値
UTC(世界標準時刻)フォーマットで文字列化したものを返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.toUTCString() );  // Mon, 16 Feb 2004 03:45:30 GMT
参照

UTC クラス関数 JS1.0, 1.3Date...

1970年 1月 1日 00:00:00(UTC) からのミリ秒を取得

Date.UTC(year, month, day[, hrs, min, sec, ms]) : Integer

引数
引数はUTC(世界標準時刻)で与えて下さい。
year : Integer
1900年後の年
month : Integer
月 0~11 0は1月、11は12月
day : Integer
日 1~31
hrs : Integer
時間 0~23
min : Integer
分 0~59
dec : Integer
秒 0~59
ms : Integer
ミリ秒 0~999
返値
1970年 1月 1日 00:00:00(UTC) からのミリ秒を返します。
参照

valueOf 関数 JS1.1Date...

Dataオブジェクトの基本データ値を取得

date.valueOf() : Integer

返値
1970年 1月 1日 00:00:00(UTC) からのミリ秒を返します。
dt = new Date( "2/16/2004 12:45:30");
alert( dt.valueOf() );  // 1076903130000
参照

Error, {Some}Error クラス ...
  {Some}Error = EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError

実行時エラー状況を知らせるクラスです。

Errorクラス以外の EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIErrorクラスは、Errorクラスを継承しており エラー種類に対応したクラスです。
  EvalError       eval 関数に関するエラーを表します。
  RangeError      数値が正しい許容範囲にない場合のエラーを表します。
  ReferenceError  存在しない変数が参照された場合のエラーを表します。
  SyntaxError     構文的に不正なコードを解釈しようとした場合のエラーを表します。
  TypeError       値が期待される型でない場合のエラーを表します。
  URIError        奇妙な形のURIに遭遇した場合のエラーを表します。

JavaScript実行エンジンはエラーが発生するとErrorオブジェクトを生成し throwします。 エラーが発生するコードを try ブロックで囲むと、そのエラーを catch ブロックでキャッチできます。キャッチされたデータはErrorオブジェクトであり、エラー種類とメッセージ、行番号、ファイル名などを知ることことができます。
var x = null;
try {
  print(x.x);
} catch(e) {
  print(e); // TypeError: x is null
}
また、Errorオブジェクトを意図的に作成し throwできます。
var x = 0;
var y;
try {
  if(x == 0) {
    throw new Error("division by zero");
  }
  y = 1 / x;
  print(y);
} catch(e) {
  print(e); // Error: division by zero
}
try ブロックで囲んでいない場合、エラーメッセージを表示してスクリプトを終了します。
var x = null;
print(x.x); // 「D:\Work\t.js:14: TypeError: x is null」を表示
              // この後の命令は実行されない。
x = 10;
print(x);

constructorプロパティ インスタンスのプロトタイプが生成された関数
messageプロパティ エラーメッセージ
fileNameプロパティ エラーを起こしたファイルへのパス
lineNumberプロパティ エラーを起こしたファイル内の行番号
stackプロパティ スタックトレース
Error,
EvalError, RangeError,
ReferenceError, SyntaxError,
TypeError, URIError
コンストラクター
エラーオブジェクト作成
toSource関数 エラーオブジェクトのソースを含む文字列を返す関数
toString関数 エラーオブジェクトを表す文字列を返す関数

constructor プロパティError...

オブジェクトのプロトタイプを生成する関数

error.constructor : Object

error = new Error('test error');
alert( error.constructor==Error ); //true
 

message プロパティError...

エラーのメッセージ

error.message : String

var x = null;
try {
  print(x.x);
} catch(e) {
  print(e.message); // x is null
}
 

fileName プロパティ (非標準)Error...

エラーを起こしたファイルへのパス名

error.fileName : String

var x = null;
try {
  print(x.x);
} catch(e) {
  print(e.fileName); // D:\Work\t.js
}
 

lineNumber プロパティ (非標準)Error...

エラーを起こしたファイル内の行番号

error.lineNumber : Integer

var x = null;
try {
  print(x.x);
} catch(e) {
  print(e.lineNumber); // 5
}
 

stack プロパティ (非標準)Error...

スタックトレース(エラー時の関数呼び出し履歴)

error.stack : String

解説
1スタックの文字列フォーマットは
  関数名 @ 関数が定義されたファイル名 : 行番号
となってます。関数外のスタックでは関数名は空になります。
関数が複数呼び出されていれば、スタックの深い位置から、順次 改行文字で区切って文字列表現されます。
function f1() {
  f2();
}
function f2() {
  var x = null;
  print(x.x);
}

try {
  f1();
} catch(e) {
  print(e.stack);
}
/*
f2@D:\Work\t.js:72
f1@D:\Work\t.js:68
@D:\Work\t.js:76
*/
 

Error, {Some}Error コンストラクター Error...
  {Some}Error = EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError

エラーオブジェクト作成

new Error( [message[, fileName[, lineNumber]]] ) : Error
new {Some}Error( [message[, fileName[, lineNumber]]] ) : {Some}Error
  {Some}Error = EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError

引数
message : String
人間に読めるエラーの説明
fileName : String   (非標準)
例外を発生させるコードを含むファイルの名前
lineNumber : Integer   (非標準)
例外を発生させるコードの行番号
返値
エラーオブジェクトを返します。
function fun() {
  throw new Error("error-test!");
}

try{
  fun();
}catch(e){
  print("e instanceof Error => " + (e instanceof Error));
  print("message => " + e.message);
  print("name => " + e.name);
  print("lineNumber => " + e.lineNumber);
  print("fileName => " + e.fileName);
  print();
  print("stack => " + e.stack);
  print("to_string => " + e.toString());
  print("to_source => " + e.toSource());
}

/*
e instanceof Error => true
message => error-test!
name => Error
lineNumber => 2
fileName => D:\Work\t.js

stack => fun()@D:\Work\t.js:2
@D:\Work\t.js:6

to_string => Error: error-test!
to_source => (new Error("error-test!", "D:\\Work\\t.js", 2))
*/
  

toSource 関数 (非標準)Error...

エラーオブジェクトのソースを含む文字列を返す関数

error.toSource() : String

返値
エラーオブジェクトのソース文字列を返します。
参照
toString関数

toString 関数 (非標準)Error...

エラーオブジェクトを表す文字列を返す関数

error.toString() : String

返値
エラーオブジェクトの文字列を返します。
参照
toSource関数
var error = new Error("error-test!");
alert( error.toString() );  // Error: error-test!
alert( error.toSource() );  // (new Error("error-test!", "D:\\Work\\t.js", 33))

Function クラス ...

関数オブジェクトを扱うクラスです。

作成方法
Functionコンストラクター
  new Function ([arg1, arg2, ... argN,] functionBody)
function文(関数定義) function name([param1, param2, ... paramN]) { statements }
パラメーター
arg1, arg2, ... argN 関数の仮引数名。JavaScript変数に適合する文字列を与えます。例えば、"x" とか "theValue"
functionBody 関数定義に含まれるJavaScript文からなる文字列です。
name 関数名
param1, param2, ... paramN 関数に渡される引数の名前(仮引数)です。
statements 関数本体のJavaScript文です。

関数オブジェクトの呼び出し方 Functionコンストラクターの場合 var sum = new Function("a","b","return a + b"); alert( sum(20,30) ); // 50
function文(関数定義)の場合 function sum(a,b) { return a + b; } alert( sum(200,300) ); // 500

argumentsプロパティ 関数に渡した引数に一致する配列
callerプロパティ 現在実行している関数を呼び出した関数
constructorプロパティ オブジェクトのプロトタイプを生成する関数
lengthプロパティ 関数によって期待される引数の数
nameプロパティ 関数の名前
Functionコンストラクター 関数オブジェクトの作成
apply関数 関数の別呼び出し(引数を配列化)
bind関数 呼出オブジェクトと引数を結合した関数を作成
call関数 関数の別呼び出し(引数を並べる)
toSource関数 関数のソースコード
toString関数 関数のソースコード
valueOf関数 自分自身関数オブジェクトを返す

arguments プロパティ JS1.0(非推奨)Function...

関数に渡した引数に一致する配列

func.arguments : Array

解説
関数に渡した引数に一致する配列。これは、Function オブジェクトのプロパティとしては、非推奨です。代わりに関数内に用意されている arguments オブジェクトを使用してください。
function A(a,b,c)
{
 alert(A.arguments.length); // alert(arguments.length);
}

A(10); // 1

caller プロパティ JS1.5(非標準)Function...

現在実行している関数を呼び出した関数

func.caller : Function

function A(a,b,c)
{
	alert(A.caller.toSource() );
}
function B()
{
	A();
}

B();
/*
function B()
{
	A();
}
*/

constructor プロパティ JS1.1Function...

オブジェクトのプロトタイプを生成する関数

func.constructor : Object

function A() {}
alert( A.constructor==Function ); //true
 

length プロパティ JS1.1Function...

関数によって期待される引数の数

func.length : Integer [ReadOnly]

解説
new Function(...), function name(...)での仮引数の数を返します。
function A(a,b,c)
{
 alert(A.arguments.length); // alert(arguments.length);
}

A.length; // 3

name プロパティ (非標準)Function...

関数の名前

func.name : String

function A()
{
}
alert( A.name ); // "A"
 

Function コンストラクター JS1.1Function...

関数オブジェクトの作成

new Function([arg1, arg2, ... argN,] functionBody) : Function

引数
arg1, arg2, ... argN : String
関数の仮引数名
functionBody : String
関数本体のJavaScript文
返値
作成された関数オブジェクトを返します。
var multiply = new Function("x", "y", "return x * y");
alert( multiply(4,5) ); //20

apply 関数 JS1.3Function...

関数の別呼び出し(引数を配列化)

func.apply(thisArg[, argArray])

引数
thisArg : Object
呼び出しオブジェクト
argArray : Array
argArray[0],argArray[1],...が関数オブジェクトへ渡されます。
解説
オブジェクトを指定しない呼び出し(call)の場合
    function sum(a,b) { return a + b; }
    alert( sum(20,30) ); // 50
    alert( sum.apply(null,[20,30]) ); // 50
  sum(20,30)とsum.apply(null,[20,30])は同じ呼び出しです。

オブジェクトを指定した呼び出し(call)の場合
    function Point(x,y) { this.x = x; this.y = y; } // Pointクラスのコンストラクター
    function absm(k) { return k * Math.sqrt(this.x*this.x + this.y*this.y); }
    Point.prototype.absm = absm;
    var pt = new Point(5,12);
    alert( pt.absm(2) ); // 26
    alert( absm.apply(pt,[2]) ); // 13
  pt.absm()とabsm.apply(pt,[2])は同じ呼び出しです。
参照

bind 関数 JS1.8.5Function...

呼出オブジェクトと引数を結合した関数を作成
作成された関数を bound functionと呼ぶことにします。

func.bind( thisArg[, arg1[, arg2[, ...]]] ) : Function

引数
thisArg : Object
呼出オブジェクト。
nullをセットした場合、thisArg=globalオブジェクトと同じです。
arg1, arg2, ...
結合する引数
返値
funcとthisArg[, arg1[, arg2[, ...]]]を結合して新しく作成された関数を返します。
作成された bound functionの実行は、次のように func関数を呼び出します。
func1 = func.bind(null,p1,p2);
func1(a1,a2); // func(p1,p2,a1,a2); と同じ

func2 = func.bind(obj,p1,p2);
func2(a1,a2); // obj.func(p1,p2,a1,a2); と同じ
参照

例1. thisを操作する bound関数
var x = 9,
    module = {
      getX: function() {
        return this.x;
      },
      x: 81
    };
 
//  module.getX() は, module==this となり, module.xが返ってきます。
print( module.getX() ); // 81
 
//  次の例では、thisにglobalオブジェクトがセットされています。
var getX = module.getX;
 
//  getX() は, module==global となり, xが返ってきます。
print( getX() );  // 9
 
//  以下では、moduleを thisとして結合されています。
var boundGetX = getX.bind(module);
 
//  boundGetX()は, this==module となり module.xが返ってきます。
print( boundGetX() ); // 81

例2. 引数を取り込んだ bound関数
function List() {
  var a = [];
   
  for (var i = 0; i < arguments.length; i++) {
    
    a.push(arguments[i]);
   
  }
	       
  return a;
}
 
//  リスト作成
var listOne = List(1, 2, 3);
 
print(listOne); // [1, 2, 3]
 
 
//  1つの引数を取り込んだ関数を作成
var leadingZeroList = List.bind(null /* this */, 0);
 
print( leadingZeroList() ); // [0]
 
print( leadingZeroList(1) );  // [0, 1]
 
print( leadingZeroList(1, 2) ); // [0, 1, 2]

例3. bound関数でコンストラクタ
function Point(x, y) {
  this.x = x;
  this.y = y;
}
 
//  Pointコンストラクタのprototypeに toStringメソッドを追加
Point.prototype.toString = function() {
  return this.x + "," + this.y;
};
 
//  Pointコンストラクタでオブジェクトを作成
var p = new Point(1, 2);
 
print( p.toString() );  //  1,2
 
 
var emptyObj = {},
    YAxisPoint = Point.bind(emptyObj, 0 /* x */);
 
 
//  YAxisPointコンストラクタでオブジェクトを作成
var axisPoint = new YAxisPoint(5);
 
print( axisPoint.toString() );  // 0,5
 
print( axisPoint instanceof Point );  // true
 
print( new YAxisPoint(17) instanceof Point ); // true
 
print( new YAxisPoint(17) instanceof YAxisPoint );  // true
 
print( new Point(17, 42) instanceof YAxisPoint ); // true // 下記解説の完全でない実装では falseとなります。

// YAxisPointコンストラクタは普通の関数として呼び出せます。
YAxisPoint(13);
 
print( emptyObj.x + "," + emptyObj.y ); // 0,13

解説
仮にJavaScriptに Function.prototype.bind 関数がない場合、完全でないけど次のように実装できます。
if ( !Function.prototype.bind ) { Function.prototype.bind = function( obj ) { var slice = [].slice, args = slice.call(arguments, 1), self = this, nop = function () {}, bound = function () { return self.apply( this instanceof nop ? this : ( obj || {} ), args.concat( slice.call(arguments) ) ); }; nop.prototype = self.prototype; bound.prototype = new nop(); return bound; }; } この実装は、bindクラス関数の仕様といくらか違う動作をします。たとえば、上記の例3. 演算子instanceof が正しく動作していません。

call 関数 JS1.3Function...

関数の別呼び出し(引数を並べる)

func.call(thisArg[, arg1,arg2,...])

引数
thisArg : Object
呼び出しオブジェクト
arg1, arg2, ...
arg1, arg2, ...がそのまま関数オブジェクトへ渡されます。
解説
オブジェクトを指定しない呼び出し(call)の場合
    function sum(a,b) { return a + b; }
    alert( sum(20,30) ); // 50
    alert( sum.call(null,20,30) ); // 50
  sum(20,30)とsum.call(null,20,30)は同じ呼び出しです。

オブジェクトを指定した呼び出し(call)の場合
    function Point(x,y) { this.x = x; this.y = y; } // Pointクラスのコンストラクター
    function absm(k) { return k * Math.sqrt(this.x*this.x + this.y*this.y); }
    Point.prototype.absm = absm;
    var pt = new Point(5,12);
    alert( pt.absm(2) ); // 26
    alert( absm.apply(pt,[2]) ); // 13
  pt.absm(2)とabsm.call(pt,2)は同じ呼び出しです。
参照

toSource 関数 JS1.3(非標準)Function...

関数のソースコード

func.toSource() : String

返値
関数のソースコードを文字列化して返します。
参照

toString 関数 JS1.1Function...

関数のソースコード

func.toString() : String

返値
関数のソースコードを文字列化して返します。
参照

valueOf 関数 JS1.1Function...

自分自身関数オブジェクトを返す

func.valueOf() : String

返値
funcを返します。
参照

Number クラス ...

数値のラッパークラスです。

constructorプロパティ オブジェクトのプロトタイプを生成する関数
MAX_VALUE定数 最大数値
MIN_VALUE定数 最も0に近い正の数値
NaN定数 数値でないことを表す特別な値
NEGATIVE_INFINITY定数 負の無限大
POSITIVE_INFINITY定数 正の無限大
Numberコンストラクター 数値オブジェクトの作成
toExponential関数 指数表記で数値の文字列化
toFixed関数 固定小数点表記で数値の文字列化
toLocaleString関数 数をローカライズした文字列へ変換
toPrecision関数 有効桁数で数値の文字列化
toSource関数 Numberオブジェクトのソース文字列を取得
toString関数 Numberオブジェクトの文字列化
valueOf関数 Numberオブジェクトの基本データ値を取得

constructor プロパティ JS1.1Number...

オブジェクトのプロトタイプを生成する関数

number.constructor : Object

a = 12.3; // a = new Number(12.3);
alert( a.constructor==Number ); //true
 

MAX_VALUE 定数 JS1.0Number...

最大数値

Number.MAX_VALUE : Number [ReadOnly]

解説
JavaScriptが扱える最大数値を返します。約 1.79e+308
MAX_VALUEを超える数値はInfinityとされます。
参照

MIN_VALUE 定数 JS1.0Number...

最も0に近い正の数値

Number.MIN_VALUE : Number [ReadOnly]

解説
JavaScriptが扱える最も0に近い正の数値を返します。約 5e-324
MIN_VALUEより小さい数値は0とされます。
参照

NaN 定数 JS1.0Number...

数値でないことを表す特別な値

Number.NaN [ReadOnly]

解説
JavaScriptではNaNとリテラル表現されます。
NaN は、それ自身を含む、いかなる値と比較しても等しくなりません。isNaN 関数を使って調べれます。
数値を返す関数で、エラーが発生したときこの値を返すことで使用します。
参照

NEGATIVE_INFINITY 定数 JS1.0Number...

負の無限大

Number.NEGATIVE_INFINITY : Number [ReadOnly]

解説
-Infinityとリテラル表現されます。
JavaScript で表現できる最も小さい負の値 (-Number.MAX_VALUE) よりも小さい値はNumber.NEGATIVE_INFINITYとして扱います。
参照

POSITIVE_INFINITY 定数 JS1.0Number...

正の無限大

Number.POSITIVE_INFINITY : Number [ReadOnly]

解説
Infinityとリテラル表現されます。
JavaScript で表現できる最も大きい値 (Number.MAX_VALUE) よりも大きい値はNumber.POSITIVE_INFINITYとして扱います。
参照

Number コンストラクター Number...

数値オブジェクトの作成

new Number(value) : Number

引数
value : Number
数値
返値
作成された数値オブジェクトを返します。
解説
数値からこのNumberクラスの関数を呼び出すとき、
このコンストラクターで自動的にNumberオブジェクトに変換してから呼び出します。
var a = 1234;
alert( a.toString(16) ); // 4d2

toExponential 関数 JS1.5Number...

指数表記で数値の文字列化

number.toExponential([fractionDigits]) : String

引数
fractionDigits : String
小数点以下の桁数  省略した場合、数値の表現に必要な桁数がセットされます。
返値
指数表記の数値を表す文字列を返します。
var num=77.1234
alert(num.toExponential())  // 7.71234e+1
alert(num.toExponential(4)) // 7.7123e+1   
alert(num.toExponential(2)) //displays 7.71e+1
alert(77.1234.toExponential()) // 7.71234e+1
alert(77 .toExponential())   // 7.7e+1 注意: .の前にスペースをあり!
参照

toFixed 関数 JS1.5Number...

固定小数点表記で数値の文字列化

number.toFixed([fractionDigits]) : String

引数
fractionDigits : Integer
小数点以下の桁数  省略した場合、0桁
返値
固定小数点表記の数値を表す文字列を返します。
var num=10.1234
alert(num.toFixed())  // 10
alert(num.toFixed(4)) // 10.1234
alert(num.toFixed(2)) // 10.12 
参照

toLocaleString 関数Number...

数をローカライズした文字列へ変換

number.toLocaleString() : String

返値
数のローカライズした文字列を返します。

toPrecision 関数Number...

有効桁数で数値の文字列化

number.toPrecision([precision]) : String

引数
precision : Integer
有効桁数を指定します。1~21  省略した場合、toString()を実行します。
返値
指数表記の数値では、(precision - 1) 桁を小数点以下の数値として返します。
固定小数点の数値では、precision 有効桁数分を返します。
var num=5.123456
alert(num.toPrecision())    // 5.123456
alert(num.toPrecision(4))   // 5.123
alert(num.toPrecision(2))   // 5.1
alert(num.toPrecision(1))   // 5
alert(1250 .toPrecision(2)) // 1.3e+3
alert(1250 .toPrecision(5)) // 1250.0 
参照

toSource 関数 JS1.3 (非標準)Number...

Numberオブジェクトのソース文字列を取得

number.toSource() : String

返値
Numberオブジェクトのソース文字列を返します。
参照

toString 関数 JS1.1Number...

Numberオブジェクトの文字列化

number.toString([radix]) : String

引数
radix : Integer
進数を指定します。2~36  省略した場合、10
返値
数値の文字列を返します。
解説
JavaScriptは数値を文字列として表現しなければならないときや文字との連結のとき、
toString()が自動的に呼び出されます。
var howMany=10;
alert(howMany.toString());  // 10
alert(45 .toString());      // 45
参照

valueOf 関数 JS1.1Number...

Numberオブジェクトの基本データ値を取得

number.valueOf() : Number

返値
格納されている数値を返します。
var x = new Number();
print(x.valueOf());     // 0
参照

Object クラス ...

Objectはプロパティ(値と名前)から構成されるデータ集合型です。

JavaScriptの他のオブジェクトはすべて Objectを継承しているので、関数のoverrideがなければ Objectの関数(メソッド)が呼び出せます。

__proto__プロパティ オブジェクトのプロパティ継承チェーン
constructorプロパティ オブジェクトのプロトタイプを生成する関数
Objectコンストラクター Objectオブジェクトの作成
createクラス関数 指定したプロトタイプとプロパティでObjectオブジェクト作成
definePropertyクラス関数 プロパティを定義, 変更
definePropertiesクラス関数 複数のプロパティを定義, 変更
freezeクラス関数 プロパティの追加・削除・変更を凍結
getOwnPropertyDescriptorクラス関数 オブジェクトが直接持つプロパティの記述子を取得
getOwnPropertyNamesクラス関数 プロパティ(列挙不可属性を持つものも)の名前をすべて取得
getPrototypeOfクラス関数 オブジェクトのプロトタイプオブジェクトを取得
hasOwnProperty関数 オブジェクトが指定されたプロパティを持っているかどうかを判定
isExtensibleクラス関数 オブジェクトを拡張できるか判定
isFrozenクラス関数 オブジェクトが凍結されてるか判定
isPrototypeOf関数 呼び出しオブジェクトが、引数で指定したオブジェクトのプロトタイプオブジェクトであるかを判定
isSealedクラス関数 オブジェクトを保護されているかを判定
keysクラス関数 すべての列挙可能なプロパティ名を取得
preventExtensionsクラス関数 オブジェクトの拡張を禁止
propertyIsEnumerable関数 指定されたプロパティが列挙可能かどうかを判定
sealクラス関数 オブジェクトを保護する
toLocaleString関数 ローカルフォーマットで文字列化
toSource関数 オブジェクトのソースコードを取得
toString関数 オブジェクトの値を表す文字列を取得
unwatch関数 プロパティの代入監視関数を削除
valueOf関数 指示されたオブジェクトの基本データを取得
watch関数 プロパティへの代入を監視する関数を登録
__defineGetter__関数 オブジェクトにgetter関数を登録
__defineSetter__関数 オブジェクトにsetter関数を登録
__lookupGetter__関数 オブジェクトに登録されているgetter関数を取得
__lookupSetter__関数 オブジェクトに登録されているsetter関数を取得

__proto__ プロパティ (非標準)Object...

オブジェクトのプロパティ継承チェーン

object.__proto__ : Object

解説
JavaScriptでは、オブジェクトに指定されたプロパティが存在しないと、object.__proto__にセットされたオブジェクトからプロパティを探す仕組みになっています。
var b = { x:10, y:20 };
var a = { z:30 };
alert( "a.x = " +a.x + " a.y = "+a.y ); // a.x = undefined a.y = undefined
a.__proto__ = b;
alert( "a.x = " +a.x + " a.y = "+a.y ); // a.x = 10 a.y = 20

new演算子で作成されたオブジェクトの__proto__プロパティには、コンストラクタ(すなわち関数)のprototypeプロパティ値がセットされています。次の例のようにJavaScriptでオブジェクト指向が可能になります。
参照
function Point(x,y) {
 this.x = x;
 this.y = y;
}

Point.prototype = {
 move : function(dx,dy) {
  this.x += dx;
  this.y += dy;
 },
 abs : function() {
  return Math.sqrt(this.x*this.x + this.y*this.y);
 }
};

var pnt = new Point(10,20);
alert( "pnt.x = "+pnt.x + "  pnt.y = "+pnt.y ); //pnt.x = 10  pnt.y = 20
alert( "pnt.abs() --> " + pnt.abs() ); //pnt.abs() --> 22.360679774997898

alert( pnt.__proto__==Point.prototype ); //true

constructor プロパティ JS1.1Object...

オブジェクトのプロトタイプを生成する関数

object.constructor : Object

o = new Object; // o = {}
alert( o.constructor == Object ); //true
a = new Array; // a = []
alert( a.constructor == Array ); // true
n = new Number(3);
alert( n.constructor == Number); // true

Object コンストラクター Object...

Objectオブジェクトの作成

new Object() : Object

返値
作成されたObjectオブジェクトを返します。
解説
Objectオブジェクトの作成は、次のようにもできます。
  var obj = {}; // var obj = new Object();

プロパティ付きのObjectオブジェクト作成は、次のように書きます。
  var obj = { a:100, b:200 };
これは、以下と同じです。
  var obj = new Object();
  obj.a = 100; obj.b = 200;

create クラス関数 JS1.8.5Object...

指定したプロトタイプとプロパティでObjectオブジェクト作成

Object.create( proto [, propertiesObject ] ) : Object

引数
proto : Object
新しく作られるオブジェクトのプロトタイプ
propertiesObject : Object
新しく作られるオブジェクトのプロパティ記述子。
{ プロパティ名 : プロパティ記述子, ... }
definePropertyクラス関数, definePropertiesクラス関数 を参照してください。
返値
作成されたオブジェクトを返します。
参照
var o;

// point オブジェクトをプロトタイプとするオブジェクト作成
var point = { x:10, y:20};
o = Object.create(point);
print(o.x); // 10
o.y = 200;
print(o.y); // 200
print(point.y); // 20

// o = {} と同じ
o = Object.create(Object.prototype);

// プロトタイプ :新しい空オブジェクト
// プロパティは1つ p : 書き換え, 列挙, 構成変更 すべて不可
// which isn't writable, enumerable, or configurable
o = Object.create({}, { p: { value: 42 } });

defineProperty クラス関数 JS1.8.5Object...

プロパティ定義, 変更

Object.defineProperty( obj, prop, descriptor ) : Object

引数
obj : Object
C
prop : String
プロパティ名
descriptor : Object
プロパティ記述子
返値
プロパティ定義・変更した引数の obj を返します。
参照
解説
プロパティは名前と値のペアがであるが、さらに書込許可・列挙・変更属性を持っています。
属性指定を含んだプロパティの定義また変更を行うには、 defineProperty関数を使用します。

// 普通のプロパティ定義
var o = {};
o.p = 42;

は、次のようにします。

// defineProperty関数を使ったプロパティ定義
var o = {};
Object.defineProperty(o, "p",
           {
              value : 42,
              writable : true,
              enumerable   : true,
              configurable : true
           }
);

プロパティは上記のような昔ながらの data propertyと ECMAScript の 5th edition で導入された accessor propertyとがあります。それぞれdefineProperty関数でのプロパティの記述子に表れる属性が異なります。

data property が持つ属性
属性名 意味
value プロパティの値。省略時 : undefined
writable 代入 によって value の値を書き換えられるかどうか。 true なら書き換え可能。省略時 : false
enumerable true なら for-in ループ中に値が現れる。 false なら現れない。省略時 : false
configurable false ならプロパティを delete したり、accessor property に変化させたり、プロパティの属性 (value を除く) を変更したりできない。省略時 : false

accessor property が持つ属性
属性名 意味
get Undefined か関数。 プロパティの値が参照されたときに呼び出される。省略時 : undefined
set Undefined か関数。 プロパティへの値の代入が行われるときに呼び出される。省略時 : undefined
enumerable true なら for-in ループ中に値が現れる。 false なら現れない。省略時 : false
configurable false ならプロパティを delete したり、data property に変化させたり、プロパティの属性 (value を除く) を変更したりできない。省略時 : false

// 普通のget setを使ったプロパティ定義
var o = {v : 1, get p() { return this.v; }, set p(x) { this.v = x; } };
o.p = 42;

は、次のようにします。

// defineProperty関数を使ったプロパティ定義
var o = { v : 1 };
Object.defineProperty(o, "p",
           {
              get : function() { return this.v; },
              set : function(x) { this.v = x; },
              enumerable : true,
              configurable : true
           }
);
o.p = 42;
属性の値によるプロパティの状態・性質は以下の例を参考してください。

writable 属性
var o = {}; // Creates a new object
Object.defineProperty(o, "a", {value : 37,
                               writable : false});

alert(o.a); // 37
o.a = 25;
alert(o.a); // 37. 代入は効かない。また エラーは throwされない

・enumerable 属性
var i;
var o = {};
Object.defineProperty(o, "a", { value : 1, enumerable:true });
Object.defineProperty(o, "b", { value : 2, enumerable:false });
Object.defineProperty(o, "c", { value : 3 }); // enumerable は defaults値 false
o.d = 4;

for (i in o) {   
  alert(i); 
}
// alerts 'a' then 'd'

・configurable 属性
var o = {};
Object.defineProperty(o, "a", { get : function(){return 1;},
	                                configurable : false } );

Object.defineProperty(o, "a", {configurable : true}); // TypeError: can't redefine non-configurable property 'a'
Object.defineProperty(o, "a", {enumerable : true}); // TypeError:  ...
Object.defineProperty(o, "a", {set : function(){}}); // TypeError: ...
Object.defineProperty(o, "a", {get : function(){return 1;}}); // TypeError: ...
Object.defineProperty(o, "a", {value : 12}); // TypeError: ...

alert(o.a); // 1
delete o.a; // プロパティ a は削除されない
alert(o.a); // 1

・普通のプロパティ追加と 属性がdefaultの場合 の違い
var o = {};

o.a = 1;
// これは次と同じ :
Object.defineProperty(o, "a", {value : 1,
                               writable : true,
                               configurable : true,
                               enumerable : true});

// 一方 :
Object.defineProperty(o, "a", {value : 1});
// これは以下と同じ :
Object.defineProperty(o, "a", {value : 1,
                               writable : false,
                               configurable : false,
                               enumerable : false});

defineProperties クラス関数 JS1.8.5Object...

複数のプロパティを定義, 変更

Object.defineProperties( obj, props ) : Object

引数
obj : Object
プロパティ定義・変更するオブジェクト
props : Object
定義・変更するプロパティ記述子とプロパティ名から構成されるオブジェクト。
{ プロパティ名 : プロパティ記述子, ... }
返値
引数のobjを返します。
参照
var point = { x : 1, y : 2 };

// これは次と同じ :
var point = {};
Object.defineProperties(point,
      { 
        x : {value : 1, writable : true, configurable : true, enumerable : true},
        y : {value : 2, writable : true, configurable : true, enumerable : true}
      }
);

freeze クラス関数 JS1.8.5Object...

プロパティの追加・削除・変更を凍結

Object.freeze( obj ) : Object

引数
obj : Object
返値
引数のobjを返します。
参照
var obj =
  {
    prop: function () {},
    foo: "bar"      
  };   
 
// プロパティ追加、値変更、プロパティ削除ができます。
obj.foo = "baz";
obj.lumpy = "woof";
delete obj.prop;
 
// オブジェクトを凍結する
var o = Object.freeze(obj);
print(o === obj);	// true
 
print(Object.isFrozen(obj) === true);	// true
 
// 値変更やプロパティ追加は失敗します。
obj.foo = "quux"; // 値変更しない。何も文句を言わない。
obj.quaxxor = "the friendly duck"; // プロパティ追加はできていない。何も文句を言わない。
 
// つぎに strictモードで試すとTypeErrorをthrowします。
function fail()
{
  "use strict";
  obj.foo = "sparky"; // TypeError: obj.foo is read-only
  obj.sparky = "arf"; // TypeError: obj.sparky is not extensible
  delete obj.foo; // TypeError: property obj.foo is non-configurable and can't be deleted
}
fail();

// Object.definePropertyを使うと TypeErrorをthrowします。
Object.defineProperty(obj, "ohai", { value: 17 }); // TypeError: Object.defineProperty(..., ({value:17})) is not extensible
Object.defineProperty(obj, "foo", { value: "eit", writable: true }); // TypeError: can't redefine non-configurable property 'foo'

getOwnPropertyDescriptor クラス関数 JS1.8.5Object...

オブジェクトが直接持つプロパティの記述子を取得

Object.getOwnPropertyDescriptor( obj, prop ) : Object

引数
obj : Object
プロパティを持つオブジェクト
prop : String
プロパティ名
返値
引数のobjを返します。
参照
var o, d;
 
o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "foo");
print( uneval(d) );
/*
 {get: getter func, set: undefined, enumerable:true, configurable:true}
*/

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
print( uneval(d) );
/*
 {value:42, writable:true, enumerable:true, configurable:true}
*/

o = {};
Object.defineProperty(o, "baz", { value: 8675309, writable: false, enumerable: false });
d = Object.getOwnPropertyDescriptor(o, "baz");
print( uneval(d) );
/*
 {value:8675309, writable:false, enumerable:false, configurable:false}
*/

getOwnPropertyNames クラス関数 JS1.8.5Object...

プロパティ(列挙不可属性を持つものも)の名前をすべて取得

Object.getOwnPropertyNames( obj ) : Object

引数
obj : Object
自身のプロパティを列挙したいオブジェクト
返値
objの直接のプロパティ名すべてを配列にして返します。
参照
var arr = ["a", "b", "c"];
print(Object.getOwnPropertyNames(arr).sort()); // 0,1,2,length
 
// 配列のようなオブジェクト
var obj = { 0: "a", 1: "b", 2: "c"};
print(Object.getOwnPropertyNames(obj).sort()); // 0,1,2
 
// 列挙付加なプロパティ
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; }, enumerable: false } });
my_obj.foo = 1;
 
print(Object.getOwnPropertyNames(my_obj).sort()); // foo,getFoo

getPrototypeOf クラス関数 JS1.8.1Object...

オブジェクトのプロトタイプオブジェクトを取得

Object.getPrototypeOf( object ) : Object

引数
object : Object
プロトタイプオブジェクトを取得したいオブジェクト
返値
objectのプロトタイプオブジェクトを返します。
参照
function Foo() {}

obj = new Foo()
alert( Object.getPrototypeOf(obj)==obj.__proto__ ) // => true
alert( Object.getPrototypeOf(obj)==Foo.prototype ) // => true

hasOwnProperty 関数 Object...

オブジェクトが指定されたプロパティを持っているかどうかを判定

object.hasOwnProperty( prop ) : Boolean

引数
prop : String
調べたいプロパティの名前。
返値
指定されたプロパティが、直接のプロパティとして持っていればtrueを返します。持っていなければfalseを返します。
解説
hasOwnProperty関数はあるオブジェクトが指定されたプロパティを、そのオブジェクトの直接のプロパティとして持っているかどうかを特定するのに使うことができます。in 演算子と違って、このメソッドはオブジェクトのプロトタイプチェーンをたどってチェックしません。
function Point(x,y) {
 this.x = x;
 this.y = y;
}

Point.prototype = {
 move : function(dx,dy) {
  this.x += dx;
  this.y += dy;
 },
};

var pnt = new Point(10,20);
alert( pnt.hasOwnProperty('x') ); //true
alert( pnt.hasOwnProperty('move') ); //false
参照
in

isExtensibleクラス関数 Object...

オブジェクトを拡張できるか判定

Object.isExtensible( obj ) : Boolean

引数
obj : Object
調べたいオブジェクト。
返値
obj オブジェクトを拡張可能(extensible)なら true、拡張禁止(non-extensible)であれば falseを返します。
参照
// 新規オブジェクトは 拡張可能(extensible)です。
var empty = {};
print(Object.isExtensible(empty));  // true

// 拡張禁止に変更すると...
Object.preventExtensions(empty);
print(Object.isExtensible(empty));  // false

// オブジェクトが保護されていれば、保護の意味から拡張禁止(non-extensible)となります。
var sealed = Object.seal({});
print(Object.isExtensible(sealed)); // false

// 凍結された オブジェクトは、凍結の意味から拡張禁止(non-extensible)となります。
var frozen = Object.freeze({});
print(Object.isExtensible(frozen)); // false

isFrozenクラス関数 Object...

オブジェクトが凍結されてるか判定

Object.isFrozen( obj ) : Boolean

引数
obj : Object
調べたいオブジェクト。
返値
obj が凍結されていれば true, されていなければ falseを返します。
解説
オブジェクトが凍結されているとは、
  ・extensibleでない
  ・自身のすべてのプロパティがconfigurable==false
  ・自身の data プロパティ すべてが writable==false
  ・自身の accessor プロパティ すべてが setter を持たない
という状態のことです。

freezeクラス関数でオブジェクトを凍結させるとは、この状態にすることです。
すなわち プロパティの追加・削除・変更ができない状態にすることです。
参照
// 新規オブジェクトは extensibleなので、それは 凍結状態ではありません。
print( Object.isFrozen({}) ); // false
 
// 空の non-extensibleオブジェクトは、無意味な凍結状態です。
var vacuouslyFrozen = Object.preventExtensions({});
print(Object.isFrozen(vacuouslyFrozen));  // true
 
// 1つだけのプロパティを持つ新規オブジェクトは extensibleです。したっがて 凍結状態でない。
var oneProp = { p: 42 };
print(Object.isFrozen(oneProp));  // false
 
// オブジェクトを拡張不可にしても それはまだ凍結状態にはならない。
// なぜかというと、まだ configurable かつ writable であるから。
Object.preventExtensions(oneProp);
print(Object.isFrozen(oneProp));  // false
 
// しかし そのプロパティをdeleteすると、無意味な凍結状態になります。
delete oneProp.p;
print(Object.isFrozen(oneProp));  // true
 
// non-writableでconfigurableなプロパティを持つ non-extensible オブジェクトは 凍結状態ではない。
var nonWritable = { e: "plep" };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, "e", { writable: false }); // non-writableにする configurableはそのまま
print(Object.isFrozen(nonWritable));  // false
 
// プロパティをnon-configurable に変更したら、凍結状態になります。
Object.defineProperty(nonWritable, "e", { configurable: false }); // non-configurableにする
print(Object.isFrozen(nonWritable));  // true
 
// non-configurableでwritableなプロパティを持つ non-extensible オブジェクトは 凍結状態ではない。
var nonConfigurable = { release: "the kraken!" };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, "release", { configurable: false });
print(Object.isFrozen(nonConfigurable));  // false
 
// プロパティをnon-writable に変更したら、凍結状態になります。
Object.defineProperty(nonConfigurable, "release", { writable: false });
print(Object.isFrozen(nonConfigurable));  // true
 
// configurable accessor プロパティを持つ拡張不可なオブジェクトは 凍結状態ではない。
var accessor = { get food() { return "yum"; } };
Object.preventExtensions(accessor);
print(Object.isFrozen(accessor)); // false
 
// しかし そのプロパティを non-configurable にすれば、凍結状態になります。
Object.defineProperty(accessor, "food", { configurable: false });
print(Object.isFrozen(accessor)); // true
 
// freezeスタティク関数を使えば、オブジェクトをもっと簡単に 凍結状態にできます。
var frozen = { 1: 81 };
print(Object.isFrozen(frozen)); // false
Object.freeze(frozen);
print(Object.isFrozen(frozen)); // true
 
// 凍結状態なので、 frozen オブジェクトは non-extensibleであります。
print(Object.isExtensible(frozen)); // false
 
// また同様に frozen オブジェクトは sealされています。
print(Object.isSealed(frozen)); // true

isPrototypeOf 関数 Object...

呼び出しオブジェクトが、引数で指定したオブジェクトのプロトタイプオブジェクトであるかを判定

object.isPrototypeOf( obj ) : Boolean

引数
obj : Function
調べたいオブジェクト。
返値
objのプロトタイプチェーンをたどって、呼び出しオブジェクトobjectに一致すればtrueを返します。一致することがなければfalseを返します。
参照
function Foo() {}
function Bar() {}

obj = new Foo()
alert( Foo.prototype.isPrototypeOf(obj) ) // => true
alert( Bar.prototype.isPrototypeOf(obj) ) // => false

isSealedクラス関数 Object...

オブジェクトを保護されているかを判定

Object.isSealed( obj ) : Boolean

引数
obj : Object
調べたいオブジェクト。
返値
obj が保護されていれば true, されていなければ falseを返します。
参照
// defaultでは 保護されていない。
var empty = {};
print(Object.isSealed(empty));  // false
 
// 空の non-extensibleオブジェクトは、保護されている状態です。
Object.preventExtensions(empty);
print(Object.isSealed(empty));  // true
 
// 空でないオブジェクトのプロパティがすべてnon-configurableでなければ、保護されていない状態です。
var hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
print(Object.isSealed(hasProp));  // false
 
// しかし、プロパティをすべてnon-configurableにすれば、保護状態になります。
Object.defineProperty(hasProp, "fee", { configurable: false });
print(Object.isSealed(hasProp));  // true
 
// seal関数を使えば、最も簡単にオブジェクトを保護できます。
var sealed = {};
Object.seal(sealed);
print(Object.isSealed(sealed)); // true
 
// 保護されたオブジェクトはデフォルトで 拡張不可(non-extensible)になってます。
print(Object.isExtensible(sealed)); // false
 
// 保護されたオブジェクトは、凍結された状態かどうかは不定...
print(Object.isFrozen(sealed)); // true  プロパティがすべて non-writableだから
 
var s2 = Object.seal({ p: 3 });
print(Object.isFrozen(s2)); // false  "p" プロパティは writableだから
 
var s3 = Object.seal({ get p() { return 0; } });
print(Object.isFrozen(s3)); // true  accessorプロパティがgetterだけだから

keysクラス関数 Object...

すべての列挙可能なプロパティ名を取得

Object.keys( obj ) : Array

引数
obj : Object
調べたいオブジェクト。
返値
obj の列挙可能な直接なプロパティ名をすべて配列にして返します。
参照
解説
keysクラス関数は、for...in はオブジェクト内の直接あるいは継承プロパティで列挙可能なものすべて取り出し、hasOwnProperty関数で直接プロパティかどうかを判断させれば、つぎのように関数を自作できます。
if(!Object.keys) Object.keys = function(o){
  if (o !== Object(o))
    throw new TypeError('Object.keys called on non-object');
  var ret=[],p;
  for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
  return ret;
}
var arr = ["a", "b", "c"];
alert(Object.keys(arr)); // 0,1,2
 
// 配列ライクなオブジェクト
var obj = { 0 : "a", 1 : "b", 2 : "c"};
alert(Object.keys(obj)); // 0,1,2
 
// getFoo は 列挙不可なプロパティ
var my_obj = Object.create({}, { getFoo : { value : function () { return this.foo } } });
my_obj.foo = 1;
 
alert(Object.keys(my_obj)); // foo

preventExtensionsクラス関数 Object...

オブジェクトの拡張を禁止

Object.preventExtensions( obj ) : Object

引数
obj : Object
拡張を禁止したいオブジェクト
返値
obj を返します。
解説
オブジェクトが 拡張可能 extensibleであるとは、新しいプロパティが追加できることです。preventExtensionsクラス関数はオブジェクトをこれ以上拡張しないと印をつけるので、プロパティの追加はできません。しかし、まだプロパティのdeleteは可能であることはできます。non-extensibleなオブジェクトに新しいプロパティを追加すると、なにも言語エンジンは伝えないが失敗しています。もし、strictモードならTypeErrorをthrowします。

preventExtensionsクラス関数は指定したオブジェクトの直接のプロパティを拡張禁止するだけで、prototypeオブジェクトへのプロパティへの追加はまだ可能です。prototypeオブジェクトがセットしてある__proto__の値は変更はできないことを注意しておきます。
参照
// preventExtensionsクラス関数は non-extensibleにしたオブジェクトを返します。
var obj = {};
var obj2 = Object.preventExtensions(obj);
print(obj === obj2);  // true
 
// defaultでは オブジェクトは extensible です。
var empty = {};
print(Object.isExtensible(empty));  // true
 
// 拡張禁止(non-extensible)に変更できます。
Object.preventExtensions(empty);
print(Object.isExtensible(empty)) // false
 
// non-extensibleなオブジェクトへ新しいプロパティを definePropertyクラス関数で追加すると TypeErrorが throwされます。
var nonExtensible = { removable: true };
Object.preventExtensions(nonExtensible);
Object.defineProperty(nonExtensible, "new", { value: 8675309 }); // throws a TypeError
 
// strict モードで、non-extensibleなオブジェクトへ新しいプロパティを代入で追加すると 同じくTypeErrorが throwされます。
function fail()
{
  "use strict";
  nonExtensible.newProperty = "FAIL"; // throws a TypeError
}
fail();
 
// non-extensible なオブジェクトの prototype は 変更できません。
var fixed = Object.preventExtensions({});
fixed.__proto__ = { oh: "hai" }; // throws a TypeError

propertyIsEnumerable 関数 Object...

指定されたプロパティが列挙可能かどうかを判定

object.propertyIsEnumerable( prop ) : Boolean

引数
prop
調べたいプロパティの名前。
返値
指定されたプロパティが、直接のプロパティとして持っていて列挙可能であればtrueを返します。そうでなければfalseを返します。
o = new Object();
a = new Array();
o.prop = 'is enumerable';
a[0] = 'is enumerable';

o.propertyIsEnumerable('prop');   // true を返す
a.propertyIsEnumerable(0);        // true を返す

a.propertyIsEnumerable('length'); // false を返す
参照

sealクラス関数 Object...

オブジェクトを保護する

Object.seal( obj ) : Object

引数
obj : Object
プロパティの削除を禁止するオブジェクト
返値
objを返します。
解説
デフォルトではオブジェクトは拡張可能 extensibleです(新規プロパティが追加できる)。オブジェクトを保護すれば プロパティが追加されるのを防ぎ、すでにあるプロパティをすべてnon-configurableとしてマークします。これはオブジェクトのプロパティの集合を固定かつ不変にする効果があります。non-configurableからdataプロパティをaccessorプロパティへ変更したりその逆 を防ぎます。しかし、プロパティ値の変更は可能です。新規にプロパティ登録したりプロパティの削除は失敗します。そのとき、何もいわないかstrictモードならTypeErrorをthrowします。

prototype chainは そのままですが、__proto__プロパティは保護されます。

参照
var obj =
  {
    prop: function () {},
    foo: "bar"
  };
 
// 新規にプロパティを追加でき、存在しているプロパティは変更も削除もできます。
obj.foo = "baz";
obj.lumpy = "woof";
delete obj.prop;
 
var o = Object.seal(obj);
print(o === obj); // true
print(Object.isSealed(obj));  // true
 
// 保護されたオブジェクトのプロパティ値はまだ変更できます。
obj.foo = "quux";
 
// しかし、dataプロパティを accessorプロパティへ変換できません。その逆もできません。
Object.defineProperty(obj, "foo", { get: function() { return "g"; } }); // throws a TypeError
 
// 新規のプロパティ登録、プロパティ削除は失敗します。
obj.quaxxor = "the friendly duck"; // プロパティ登録に失敗しているが何も言わない。
delete obj.foo; // 同様に プロパティ削除に失敗しているが何も言わない。
 
// strictモードで 上記のことを実行させると TypeErrorがthrowされます。
function fail()
{
  "use strict";
  delete obj.foo; // throws a TypeError
  obj.sparky = "arf"; // throws a TypeError
}
fail();
 
// definePropertyクラス関数を使って 登録と変更を行っても TypeErrorがthrowされます。
Object.defineProperty(obj, "ohai", { value: 17 });   // throws a TypeError
Object.defineProperty(obj, "foo", { value: "eit" }); // doesn't throw a TypeError

toLocaleString 関数 Object...

ローカルフォーマットで文字列化

object.toLocaleString() : String Object...

返値
ローカルフォーマットで文字列化したものを返します。
通常はtoString関数を実行した結果を返しますが、objectのプロパティあるいはプロトタイプオブジェクトにtoLocaleString関数があればそれが実行され、その結果をこの関数は返します。

toSource 関数 JS1.3 (非標準)Object...

オブジェクトのソースコードを取得

object.toSource( prop ) : String

返値
オブジェクトのソースコード文字列を返します。
解説
  • 組み込みクラスについて toSource()関数が定義してあれば、それぞれ固有の形式で文字列を返してきます。 例えば var a = new Array("A","B","C"); alert( a.toSource() ); // ["A","B","C"] var func = new Function("a","b", "return a + b;"); alert( func.toSource() ); //(function anonymous(a, b) {return a + b;})
  • そのほかのクラスから作成されたオブジェクトでは、プロパティとその値を列挙した形式で文字列化されます。 例えば var a = { a : 100, b : 200 }; alert( a.toSource() ); // ({a:100, b:200}) function Point( x, y ) { this.x = x; this.y = y; } var pt = new Point(5,12); alert( pt.toSource() ); // ({x:5, y:12})
  • 参照

    toString 関数 JS1.0Object...

    オブジェクトの値を表す文字列を取得

    object.toString() : String

    返値
    オブジェクトの値を表す文字列をを返します。
    解説
    オブジェクトを文字列として表現したり、文字列と連結する必要があった場合、JavaScriptエンジンは
    自動的にこのtoString()関数を呼び出します。
    例えば、次の例ではtheDogは文字列化するが必要があります。
      print( theDog );
      print( "The dog is " + theDog );
    
    デフォルトではObjectクラスから継承したオブジェクトはすべてtoString()を継承しています。
    それらのtoString()関数は [object type]のような単純な文字列を返します。type はクラス名やコンストラクター関数の名前で
    あったりします。
      例えば
      var o = new Object();
      alert( o.toString() );  // [object Object]
    
    toString関数は、overrideできます。
    
    組み込みクラスのtoString()関数.
    toString()が呼ばれたとき、オブジェクトにあった文字列化を返すようにoverrideしてます。
    
    デフォルト toString()関数のoverrideの仕方. 
    ユーザークラス Dog を例にして、toString()関数をoverrideしてみましょう。
    
      function Dog(name,breed,color,sex) {
         this.name=name
         this.breed=breed
         this.color=color
         this.sex=sex
      }
      theDog = new Dog("Gabby","Lab","chocolate","girl") 
      
      //ここまでなら
      alert( theDog.toString() );  // [object Object]
    
      function dogToString() {
         var ret = "Dog " + this.name + " is [\n"
         for (var prop in this){
            if( ! (this[prop]  instanceof Function) )
                ret += " " + prop + " is " + this[prop] + ";\n"
         }
         return ret + "]"
      }
    
      // DogクラスのtoString関数をdogToString関数でoverrideします。
      Dog.prototype.toString = dogToString;
    
      //override後のtoString関数を実行
      alert( theDog.toString() );
      // 出力結果
      //   Dog Gabby is [
      //    name is Gabby;
      //    breed is Lab;
      //    color is chocolate;
      //    sex is girl;
      //   ] 
    
    参照

    unwatch 関数 JS1.2 (非標準)Object...

    プロパティの代入監視関数を削除

    object.unwatch(prop)

    引数
    pro : String
    プロパティ名
    解説
    watch関数で登録したプロパティの代入監視関数を削除します。
    参照

    valueOf 関数 JS1.1Object...

    指示されたオブジェクトの基本データを取得

    object.valueOf()

    返値
    デフォルトでは 自分自身(呼び出したオブジェクト) を返します。
    オブジェクトのクラスがvalueOf関数をoverrideしていれば、それに応じた値を返します。
    
    解説
    JavaScriptエンジンは、オブジェクトの基本データを必要となったとき自動的にvalueOf関数を呼び出します。
    もちろん明示的に呼び出せます。
    必要に応じて、クラスのvalueOf関数をoverrideできます。toString関数のoverride方法と同じです。
    
    参照

    watch 関数 JS1.2 (非標準)Object...

    プロパティへの代入を監視する関数を登録

    object.watch(prop, handler)

    引数
    prop : String
    プロパティ名
    handler : Function
    handelerは監視する関数を指定します。次の形式の関数です。
    function handler(prop,oldval,newval)
    {
       // prop : プロパティ名
       // oldval : prop の代入前の値
       // newval : 代入される新しい値
          ・
       // 処理
       return propの新しい値; //通常は return newval;
    }
    
    解説
    登録した代入監視関数を削除するには、unwatch関数を使います。
    funcの解説をします。
    o = {p:1}
    o.watch("p",
       function (id,oldval,newval) {
          alert("o." + id + " changed from " 
             + oldval + " to " + newval)
          return newval
       }) 
    
    o.p = 2;   // o.p changed from 1 to 2
    o.p = 3    // o.p changed from 2 to 3
    delete o.p
    o.p = 4    // o.p changed from undefined to 4
    
    o.unwatch('p')
    o.p = 5    // 
    
    参照

    __defineGetter__ 関数 (非標準)Object...

    オブジェクトにgetter関数を登録

    object.__defineGetter__( prop, getter)

    引数
    prop : String
    プロパティ名
    getter : Function
    getter関数.
    function getter() { return .... } 形式の関数
    返値
    なし
    var d = Date.prototype;
    d.__defineGetter__("year", function() { return this.getFullYear(); });
    d.__defineSetter__("year", function(y) { this.setFullYear(y); });
    
    var now = new Date;
    print(now.year); //get ==> 2008
    
    now.year=2010;     //set ==>
    print(now);        //Thu Mar 04 2010 15:54:04 GMT+0900
    
    参照

    __defineSetter__ 関数 (非標準)Object...

    オブジェクトにsetter関数を登録

    object.__defineSetter__( prop, setter)

    引数
    prop : String
    プロパティ名
    setter : Function
    setter関数.
    function setter(v) { ..=..; } 形式の関数
    返値
    なし
    参照

    __lookupGetter__ 関数 (非標準)Object...

    オブジェクトに登録されているgetter関数を取得

    object.__lookupGetter__( prop ) : Function

    引数
    prop : String
    プロパティ名
    返値
    オブジェクトの指定したプロパティにgetter関数が登録されていれば、その関数を返します。登録されていなければundefinedを返します。
    参照

    __lookupSetter__ 関数 (非標準)Object...

    オブジェクトに登録されているsetter関数を取得

    object.__lookupSetter__( prop ) : Function

    引数
    prop : String
    プロパティ名
    返値
    オブジェクトの指定したプロパティにsetter関数が登録されていれば、その関数を返します。登録されていなければundefinedを返します。
    参照

    Proxy クラス JS1.8.5 (非標準) ...

    このクラスの解説は内容が古く、最新版の仕様説明になっておりません。
    以下のサイトを参照してくださいませ。
          Proxy(日本語)解説
          Proxy(英語)解説
        

    Proxyオブジェクトは、オブジェクトや関数の規定動作を ユーザーの設定した関数で実行させる特殊なオブジェクトであります。
    以下の動作がユーザー設定できます。
      ・ プロパティアクセス(代入、取得)
      ・ プロパティの属性変更
      ・in 演算子の適用
      ・delete 演算子の適用
      ・関数呼出、コンストラクター(F()、new F())
    

    Proxyはまだプロタイプ実装であり 将来 仕様変更されることが十分あります。したがって、Proxyクラスの使用を自己責任のもとで使ってください。(2011/04/06)

    プロパティアクセス例
    var userobj = Proxy.create({
      get: function(recvr, name) { return "Hello " + name + "!"; }
    });
    
    alert( userobj.JavaScript );  // Hello JavaScript!
    alert( userobj.ECMAScript );  // Hello ECMAScript!
    

    Proxyオブジェクトは、ユーザー設定を定義したhandlerでProxy.create関数を実行して作成します。
    上記の例では、Proxyオブジェクトuserobjへプロパティアクセスすると handlerのget関数がプロパティ値を返してます。

    このProxyオブジェクトの機能を利用して、普通のオブジェクトをラップして アクセス履歴を取る、少し実用的な例を以下に出します。
    プロパティアクセス履歴
    var Logging = "";
    function simpleLogging( target, myname ) {
      var handler = {
        get: function(recvr,name) {
          Logging += myname + ": get( " + name + " )\n";
          return target[name];
        },
        set: function(recvr,name,val) {
          Logging += myname + ": set( " + name + ", " + val + " )\n";
          target[name] = val;
          return true;
        },
        delete: function(name) {
          Logging += myname + ": delete( " + name + " )\n";
    			delete target[name];
          return true;
        }
      };
    
      return Proxy.create(handler);
    }
    
    var pnt1 = { x:0, y:0 }, pnt2 = { x:10, y:20, z:30 };
    var pnt1L = simpleLogging( pnt1, "pnt-1" );
    var pnt2L = simpleLogging( pnt2, "pnt-2" );
    
    pnt1L.x = 100;
    pnt2L.y = -pnt1L.x;
    delete pnt2L.z;
    
    print(Logging);
    /*
    pnt-1: set( x, 100 )
    pnt-1: get( x )
    pnt-2: set( y, -100 )
    pnt-2: delete( z )
    */
    
    print( uneval(pnt2) );	// ({x:10, y:-100, z:30})
    


    関数オブジェクトもラップできます。それにはProxy.createFunction関数を使います。

    Proxyオブジェクトのその他の操作は handlerに決められた名前の関数(handle関数)が実行されます。
    そのJavScript操作とそれを実行するhandle関数は以下のように対応します。
    handle関数は、基本handle関数群とオプションhandle関数群の2種類に分けられ、前者はJavaScript操作された場合、そのhandle関数がないとTypeErrorエラーがthrowされますが、後者はhandle関数がhandlerに設定されていない場合、default実装が実行されます。

    基本handle関数
    JavScript操作handle関数説明
    Object.getOwnPropertyDescriptor(proxy, name) getOwnPropertyDescriptor: function(name) -> PropertyDescriptor | undefined プロパティディスクリプタを返します。undefined値を返すと、nameプロパティがないことになります。
    Object.getPropertyDescriptor(proxy, name) getOwnPropertyDescriptor: function(name) -> PropertyDescriptor | undefined この関数は ECMAScript5にはありません。getOwnPropertyDescriptor関数に似ていますが、プロトタイプチェーンをサーチしなければいけません。
    Object.getOwnPropertyNames(proxy) getOwnPropertyNames: function() -> Strings Array 自分自身のすべてのプロパティ名の配列を返します。
    Object.defineProperty(proxy,name,pd) defineProperty: function(name, propertyDescriptor) -> any プロパティディスクリプタで決められた属性のプロパティを定義します。返値は無視されます。
    delete proxy.name delete: function(name) -> boolean proxyから プロパティを先所します。Boolean値を返し、削除に成功したどうかを示します。
    Object.freeze(proxy)
    Object.seal(proxy)
    Object.preventExtensions(proxy)
    fix: function() -> PropertyDescriptor map (indexed on property names) | undefined プロパティ名とディスクリプタの対応マップオブジェクトを返します。fix()が呼び出された後、そのproxyはreturn値内にリストアップされたプロパティを持つ普通のオブジェクト(non-proxy)になります。そして そのhandlerはもう使われません。更にその普通のオブジェクトにそれぞれの関数(freeze(), seal(), or preventExtension())が実行されます。注記:fixされたオブジェクトはproxyオブジェクトと同一です。

    オプションhandle関数
    JavScript操作 handle関数 default実装 補足説明
    name in proxy has: function(name) -> boolean
    function(name) {
      return !!this.getPropertyDescriptor(name);
    }
    Object.hasOwnProperty(proxy, name) hasOwn: function(name) -> boolean
    function(name) {
      return !!this.getOwnPropertyDescriptor(name);
    }
    proxy.name

    receiver.name (receiverがproxyから継承していて、nameをoverrideしていない場合)
    get: function(receiver, name) -> any
    function(receiver, name) {
      var desc = this.getPropertyDescriptor(name);
      if (desc === undefined) { return undefined; }
      if ('value' in desc) {
        return desc.value;
      } else {
        if (desc.get === undefined) {
          return undefined;
        }
        return desc.get.call(receiver);
      }
    }
    receiverは proxy または proxyから継承したオブジェクト。
    proxy.name = val

    receiver.name = val (receiverがproxyから継承していて、nameをoverrideしていない場合)
    set: function(receiver, name, val) -> boolean
    function(receiver, name, val) {
      var desc = this.getOwnPropertyDescriptor(name);
      if (desc) {
        if ('writable' in desc) {
          if (desc.writable) {
            desc.value = val;
            this.defineProperty(name, desc);
            return true;
          } else {
            return false;
          }
        } else { // accessor
          if (desc.set) {
            desc.set.call(receiver, val);
            return true;
          } else {
            return false;
          }
        }
      }
      desc = this.getPropertyDescriptor(name);
      if (desc) {
        if ('writable' in desc) {
          if (desc.writable) {
            // fall through
          } else {
            return false;
          }
        } else { // accessor
          if (desc.set) {
            desc.set.call(receiver, val);
            return true;
          } else {
            return false;
          }
        }
      }
      this.defineProperty(name, {
        value: val, 
        writable: true, 
        enumerable: true, 
        configurable: true});
      return true;
    }
    receiverは proxy または proxyから継承したオブジェクト。
    for(prop in proxy){...} enumerate: function() -> String Array
    function() {
      return this.getPropertyNames().filter(
        function (name) {
          return this.getPropertyDescriptor(name).enumerable
        } );
    }
    Object.keys(proxy) keys: function() -> String Array
    function() {
      return this.getOwnPropertyNames().filter(
        function (name) {
          return this.getOwnPropertyDescriptor(name).enumerable
        });
    }



    createクラス関数 Proxyオブジェクト作成
    createFunctionクラス関数 Proxy関数オブジェクト作成

    create 関数 JS1.8.5Proxy...

    Proxyオブジェクト作成

    proxy = Proxy.create( handler[, proto] ) : Proxy

    引数
    handler : Object
    オブジェクト操作をtrapするhandler
    proto : Object
    Proxyオブジェクトのプロトタイプ。省略した場合 null。
    Object.getPrototypeOf(proxy)==proto
    返値
    作成されたProxyオブジェクトを返します。
    // 1. Simple logging
    var Logging = "";
    function simpleLogging( target, myname ) {
      var handler = {
        get: function(recvr,name) {
          Logging += myname + ": get( " + name + " )\n";
          return target[name];
        },
        set: function(recvr,name,val) {
          Logging += myname + ": set( " + name + ", " + val + " )\n";
          target[name] = val;
          return true;
        }
      };
    
      return Proxy.create(handler, Object.getPrototypeOf(target));
    }
    
    function Point(x,y) {
      this.x = x;
      this.y = y;
    };
    Point.prototype.abs = function () {
      return Math.sqrt(this.x*this.x + this.y*this.y);
    }
    
    var pnt = new Point(0,4);
    var pntL = simpleLogging( pnt, "pnt" );
    
    pntL.x = 3;
    print(pntL.abs());	// 5
    
    print(Logging);
    /*
    pnt: set( x, 3 )
    pnt: get( abs )
    pnt: get( x )
    pnt: get( x )
    pnt: get( y )
    pnt: get( y )
    */
    
    print( pnt instanceof Point ); //true
    print( pntL instanceof Point ); //true
    
    print( "x" in pnt ); //true
    print( "x" in pntL ); //TypeError: getPropertyDescriptor is not a function
    
    Logging = ""; // clear logs
    
    
    // 2. Complete logging
    // 参照:ForwardingHandlerのソース
    ForwardingHandler(target) {
      this.target = target;
    }
    ForwardingHandler.prototype = {
      // Object.getOwnPropertyDescriptor(proxy, name) -> pd | undefined
      getOwnPropertyDescriptor: function(name) {
        var desc = Object.getOwnPropertyDescriptor(this.target, name);
        if (desc !== undefined) { desc.configurable = true; }
        return desc;
      },
      
      //.....
    };
    
    Proxy.Handler = ForwardingHandler;
    
    //-------------------------------------
    function makeLogging( target, myname ) {
      var handler = new Proxy.Handler(target);
      handler.get = function(recvr,name) {
          Logging += myname + ": get( " + name + " )\n";
          return target[name];
        };
      handler.set = function(recvr,name,val) {
          Logging += myname + ": set( " + name + ", " + val + " )\n";
          target[name] = val;
          return true;
        }
      };
    
      return Proxy.create(handler, Object.getPrototypeOf(target));
    }
    
    var Logging = "";
    function makeLogging( target, myname ) {
      var handler = new Proxy.Handler(target);
      handler.get = function(recvr,name) {
          Logging += myname + ": get( " + name + " )\n";
          return target[name];
        };
      handler.set = function(recvr,name,val) {
          Logging += myname + ": set( " + name + ", " + val + " )\n";
          target[name] = val;
          return true;
        };
    
      return Proxy.create(handler, Object.getPrototypeOf(target));
    }
    
    function Point(x,y) {
      this.x = x;
      this.y = y;
    };
    Point.prototype.abs = function () {
      return Math.sqrt(this.x*this.x + this.y*this.y);
    }
    
    var pnt = new Point(0,4);
    var pntL = makeLogging( pnt, "pnt" );
    
    pntL.x = 3;
    print(pntL.abs());	// 5
    
    print(Logging);
    /*
    pnt: set( x, 3 )
    pnt: get( abs )
    pnt: get( x )
    pnt: get( x )
    pnt: get( y )
    pnt: get( y )
    */
    
    print( pnt instanceof Point ); //true
    print( pntL instanceof Point ); //true
    
    print( "x" in pnt ); //true
    print( "x" in pntL ); //true !
    

    createFunction 関数 JS1.8.5Proxy...

    Proxy関数オブジェクト作成

    fproxy = Proxy.createFunction( handler, callTrap[, constructTrap] ) : Proxy

    引数
    handler : Object
    オブジェクト操作をtrapするhandler
    callTrap : Object
    関数 function (arg...) { ... return any; }
    fproxy(arg...) は、callTrap(arg...)として実行されます。
    callTrap関数内でのthisは、呼び出し側のthisがbindされてます。
    constructTrap : Object
    関数 function (arg...) { ... return any-object; }
    new fproxy(arg...) は、constructTrap(arg...)として実行されます。
    constructTrap関数内でのthisは strictモードではundefined、non-strictモードではグローバルオブジェクトがbindされてます。
    constructTrapが省略された場合、new fproxy(arg...) は、new callTrap(arg...)として実行されます。
    返値
    作成された関数型のProxyオブジェクトを返します。
    var simpleHandler = {
      get: function(proxy, name) {
        // can intercept access to the 'prototype' of the function
        if (name === 'prototype') return Object.prototype;
        return 'Hello, '+ name;
      }
    };
    var fproxy = Proxy.createFunction(
      simpleHandler,
      function() { return arguments[0]; }, // call trap
      function() { return arguments[1]; }); // construct trap
      
    print( fproxy(1,2) ); // 1
    print( new fproxy(1,2) ); // 2
    print( fproxy.prototype==Object.prototype); // true
    print( fproxy.foo ); // 'Hello, foo'
    

    RegExp クラス ...

    RegExpは正規表現パターンを扱うクラスです。
    検索に必要なプロパティや関数を揃えています。
    
    作成方法
    リテラル形式
      /pattern/flags
    コンストラクター
      new RegExp( "pattern"[, "flags"] )
    
    パラメーター
    pattern 正規表現テキスト
    flags 指定がある場合は以下の文字を組み合わせます。
  • g : pattern に指定したパターンと一致する文字列をすべて検索するグローバル検索
  • i : 大文字小文字を区別しない
  • m : 複数行検索
  • y : 対象文字列中の正規表現の lastIndex プロパティによって示された位置からのみマッチするようになります
  • 例. /ab+c/i new RegExp("ab+c", "i") 解説 正規表現パターンのテキストには \ を使いますのでコンストラクターを使う場合、エスケープ規則(\xx)が必要になります。 例えば、 re = new RegExp("\\w+") re = /\w+/ 正規表現で使われる特殊文字のリストテーブルを以下に記述します。 これらを組み合わせて、正規表現パターンを作成します。
    Table 1.1正規表現での特殊文字
    文字意味
    \ \の後に英数字が続くと正規表現の特殊文字となりえます。 \の後に\,^,$, ... などの特殊文字を表す文字がが現れた場合には本来の文字に解釈されます。 例えば /a*/ は a が0個以上続いた文字列と一致しますが、/a\*/ では 'a*' と一致します。
    ^ 入力文字列の先頭と一致します。m フラッグが設定されている場合、^ は '\n' または '\r' の直後にも一致します。
    $ 入力文字列の末尾と一致します。m フラッグが設定されている場合、$ は '\n' または '\r' の直前にも一致します。
    * 直前の項目と 0 回以上一致します。たとえば、"zo*" は "z" とも "zoo" とも一致します。* は {0,} と同じ意味になります。
    + 直前の項目と 1 回以上一致します。たとえば、"zo+" は "zo" や "zoo" とは一致しますが、"z" とは一致しません。+ は {1,} と同じ意味になります。
    ? 直前の項目と 0 回または 1 回一致します。たとえば、"do(es)?" は "do" または "does" の"do" と一致します。? は {0,1} と同じ意味になります。
    . "\n" を除く任意の 1 文字に一致します。'\n' など、任意の文字と一致するには、'[\s\S]' などのパターンを指定します。
    (x) パターンxと一致し、文字列を記憶します。たとえば、/(foo)/ は "foo bar." の "foo" と一致し記憶されます。 それは,配列結果の [1], ..., [n] や RegExp.$1, ..., RegExp.$9 で取り出します。
    (?:x) パターンxと一致しても、その文字列は記憶されず、後で使用することはできません。
    x(?=y) x の後に y が一致したとき x と一致します。(?=y)と一致した部分は記憶されません。
    x(?!y) x の後に y と一致しなかったときのみ x と一致します。(?!y)の部分は記憶されません。
    x|y x または y と一致します。たとえば、'z|food' は "z" または "food" と一致します。"(z|f)ood" は "zoo" または "food" に一致します。
    {n} n には 0 以上の整数を指定します。正確に n 回一致します。たとえば、'o{2}' は "Bob" の 'o' とは一致しませんが、"food" の 2 つの o とは一致します。
    {n,} n には 0 以上の整数を指定します。少なくとも n 回一致します。たとえば、'o{2}' は "Bob" の "o" とは一致しませんが、"foooood" のすべての o とは一致します。'o{1,}' は 'o+' と同じ意味になります。'o{0,}' は 'o*' と同じ意味になります。
    {n,m} m および n には 0 以上の整数を指定します。n は m 以下です。n ~ m 回一致します。たとえば、"o{1,3}" は "fooooood" の最初の 3 つの o と一致します。'o{0,1}' は 'o?' と同じ意味になります。
    [xyz] 文字セットを指定します。角かっこで囲まれた文字の中のいずれかに一致します。たとえば、'[abc]' は "plain" の 'a' と一致します。
    [^xyz] 除外する文字セットを指定します。角かっこで囲まれた文字以外の文字に一致します。たとえば、'[^abc]' は "plain" の 'p' と一致します。
    [\b] バックスペースと一致します。
    \b 単語の境界と一致します。単語の境界とは、単語とスペースとの間の位置のことです。たとえば、'er\b' は "never" の 'er' と一致しますが、"verb" の 'er' とは一致しません。
    \B 単語境界以外と一致します。たとえば、'er\B' は "verb" の 'er' と一致しますが、"never" の 'er' とは一致しません。
    \cX x で指定した制御文字と一致します。たとえば、\cM は Control-M またはキャリッジ リターン文字と一致します。x の値は、A-Z または a-z の範囲内で指定します。それ以外を指定すると、リテラル文字 "c" と認識されます。
    \d 任意の 10 進文字と一致します。[0-9] と同じ意味になります。
    \D 10 進数字以外の任意の 1 文字と一致します。[^0-9] と同じ意味になります。
    \f フォームフィード文字と一致します。\x0c および \cL と同じ意味になります。
    \n 改行文字と一致します。\x0a および \cJ と同じ意味になります。
    \r キャリッジ リターン文字と一致します。\x0d および \cM と同じ意味になります。
    \s スペース、タブ、フォームフィードなどの任意の空白文字と一致します。[ \f\n\r\t\v] と同じ意味になります。
    \S 空白文字以外の任意の文字と一致します。[^ \f\n\r\t\v] と同じ意味になります。
    \t タブ文字と一致します。\x09 および \cI と同じ意味になります。
    \v 垂直タブ文字と一致します。\x0b および \cK と同じ意味になります。
    \w 単語に使用される任意の文字と一致します。アンダースコアも含まれます。'[A-Za-z0-9_]' と同じ意味になります。
    \W 単語に使用される文字以外の任意の文字と一致します。'[^A-Za-z0-9_]' と同じ意味になります。
    \num num には正の整数を指定します。既に見つかって記憶されている部分と一致します。たとえば、'(.)\1' は、連続する 2 つの同じ文字と一致します。
    \0 ヌル文字と一致します。
    \xhh ASCII 文字を表した 2 桁の 16 進数を指定します。
    \u hhhh Unicode 文字で表した 4 桁の 16 進数を指定します。

    globalプロパティ 正規表現にフラッグ g が使われているかどうかの判定
    ignoreCaseプロパティ 正規表現にフラッグ i(大文字と小文字の違いを無視) が使われているかどうかの判定
    lastIndexプロパティ 次の探索位置開始位置
    multilineプロパティ 正規表現にフラッグ m(複数行)が使われているかどうかの判定
    sourceプロパティ 正規表現から / とフラッグを除いたテキスト
    RegExpコンストラクター RegExpオブジェクトの作成
    compile関数 正規表現を変更
    exec関数 正規表現パターンを使って文字列に対して検索を実行
    test関数 文字列内でパターンに一致する部分が存在するかどうかを判定
    toSource関数 RegExpオブジェクトのリテラル表示を取得
    toString関数 RegExpオブジェクトのリテラル表示を取得
    inputクラスプロパティ RegExpオブジェクトのリテラル表示を取得
    lastMatchクラスプロパティ 最後にマッチングのテキスト(read only)
    lastParenクラスプロパティ 最後の括弧付きサブ表現にマッチしたテキスト(read only)
    lastParenクラスプロパティ 最後の括弧付きサブ表現にマッチしたテキスト(read only)
    multilineクラスプロパティ パターンマッチングがマルチラインモードで行われているかどうか
    rightContextクラスプロパティ 最後にマッチしたサブストリングの後のテキスト(read only)
    $nクラスプロパティ 最後にマッチした括弧に囲まれたサブ表現(read only)

    leftContext プロパティ JS1.1RegExp...

    最後にマッチしたサブストリングの前のテキスト(read only)

    regexp.constructor : Object

    a = /ab+c/i; // a = new RegExp("ab+c", "i") 
    alert( a.constructor==RegExp ); //true
     
    参照

    global プロパティ JS1.2RegExp...

    正規表現にフラッグ g が使われているかどうかの判定

    regexp.global : Boolean [ReadOnly]

    解説
    正規表現にフラッグ g が使われていれば trueを返し、使われていなければ falseを返します。
    正規表現にフラッグ g が使われていれば 検索文字列内のパターンの最初の 1 候補だけではなく、
    すべての候補を検索できます。

    ignoreCase プロパティ JS1.2RegExp...

    正規表現にフラッグ i(大文字と小文字の違いを無視) が使われているかどうかの判定

    regexp.ignoreCase : Boolean [ReadOnly]

    解説
    正規表現にフラッグ i が使われていれば trueを返し、使われていなければ falseを返します。
    正規表現にフラッグ i が使われていれば 検索で大文字小文字を区別しません。

    lastIndex プロパティ RegExp...

    次の探索位置開始位置

    regexp.lastIndex : Integer

    解説
      lastIndexOfプロパティは、正規表現が、グローバルサーチを示す"g" を使用した場合にのみ、セットされます。
    exec関数で実行結果が返ったとき,その一致した文字列の次位置がセットされます。 exec関数を再度実行すると次の位置から検索を開始します。 lastIndexの値を変更すれば検索開始位置をコントロールできます。

    multiline プロパティ JS1.2RegExp...

    正規表現にフラッグ m(複数行)が使われているかどうかの判定

    regexp.multiline : Boolean [ReadOnly]

    解説
    正規表現にフラッグ m が使われていれば trueを返し、使われていなければ falseを返します。
    multiline が false のとき、"^" で文字列の先頭位置に一致し、"$" で文字列の最終位置に一致します。
    multiline が true のとき、"^"で、"\n" または "\r" の直後を含む文字列の先頭位置に一致し、"$" で、"\n" または "\r" の直前を含む文字列の最終位置に一致します。
    

    source プロパティ JS1.2RegExp...

    正規表現から / とフラッグを除いたテキスト

    regexp.source : String [ReadOnly]

    解説
    正規表現から / とフラッグを除いたテキストを返します。

    RegExp コンストラクター RegExp...

    RegExpオブジェクトの作成

    new RegExp( pattern[, flags] ) : RegExp

    引数
    pattern : String
    正規表現テキスト Table 1.1正規表現での特殊文字
    flags : String
    以下の文字を組み合わせた文字列を与えます。
    
  • g : pattern に指定したパターンと一致する文字列をすべて検索するグローバル検索
  • i : 大文字小文字を区別しない
  • m : 複数行検索
  • y : 対象文字列中の正規表現の lastIndex プロパティによって示された位置からのみマッチするようになります
  • 返値
    作成されたRegExpオブジェクトを返します。
    解説
    リテラル形式で RegExpオブジェクトを作成することもできます。
      /pattern/flags
    ここでのpattern, flagsは文字列の前後に置く " , '  を除いてます。また正規表現での特殊文字 \xx は素直に使えます。
    コンストラクターの引数 pattern は、通常の文字列なので \\xx と \を2つ続けて記述する必要があります。
    また、コンストラクターの引数 pattern, flags は,文字列なので、ダイナミックに変更できるRegExpオブジェクトを
    作成できます。
    /ab+c/i
    new RegExp("ab+c", "i") 

    compile 関数 JS1.2RegExp...

    正規表現を変更

    regexp.compile( pattern[, flags] ) : RegExp

    引数
    pattern : String
    正規表現テキスト Table 1.1正規表現での特殊文字
    flags : String
    以下の文字を組み合わせた文字列を与えます。
  • g : pattern に指定したパターンと一致する文字列をすべて検索するグローバル検索
  • i : 大文字小文字を区別しない
  • m : 複数行検索
  • y : 対象文字列中の正規表現の lastIndex プロパティによって示された位置からのみマッチするようになります
  • 返値
    自分自身(regexp)を引数条件の正規表現に変更して、自分自身を返します。
    var reg = new RegExp("abc");
    alert( reg.test("xyz abc") ); // true
    alert( reg.test("xyz 123") ); // false
    
    reg.compile("123");
    alert( reg.test("xyz abc") ); // false
    alert( reg.test("xyz 123") ); // true
    
    参照

    exec 関数 JS1.2RegExp...

    正規表現パターンを使って文字列に対して検索を実行

    regexp.exec(str) : Array

    引数
    str : String
    検索対象とする文字列
    返値
    パターンに一致する文字列が見つからなかった場合、exec メソッドは null を返します。
    検索結果を含む配列を返します。
    返された配列の内容は、例で説明します。
    
       myRe=/d(b+)(d)/ig;
       myArray = myRe.exec("cdbBdbsbz");
    
    myArray
    プロパティ/インデックス 説明
    配列の中身["dbBd", "bB", "d"]
    index 一致した位置1
    input検索対象文字列cdbBdbsbz
    [0]最後に一致した文字列dbBd
    [1], ..., [n] 正規表現パターン内の(...)に一致したサブ文字列が格納されます。 [1] = bB [2] = d
    myRe.lastIndex は 5 に更新されて一致した文字列の次の位置がセットされます。 つぎの検索位置がセットされます。 再度 myArray = myRe.exec("cdbBdbsbz"); を実行するとつぎの一致位置を見つけてくれます。
    解説
    ただ単純にパターンに一致する部分があるかどうかの判定なら,test関数を使って ください。(Stringクラスのsearch関数も同じ)
    参照

    test 関数 JS1.2RegExp...

    文字列内でパターンに一致する部分が存在するかどうかを判定

    regexp.test(str) : Boolean

    引数
    str : String
    検索対象となる文字列を指定します。
    返値
    文字列内にパターンに一致する部分があれば trueを返し、なければ falseを返します。
    解説
    ただ単にパターンに一致する部分があるかどうかなら,test関数を使います。(Stringクラスのsearch関数も同じ)
    もっと一致した詳しい情報を取得したい場合には exec関数を利用してください。(Stringクラスのmatch関数も同じ)
    function testinput(re, str){
       if (re.test(str))
          laststring = " を含みます。";
       else
          laststring = " を含みません。";
       alert(str + " は " + re.source + laststring );
    }
    
    testinput( /pen|chopstick/, "This is a pen." );  // This is a pen. は pen|chopstick を含みます。
    
    参照

    toSource 関数 JS1.3 (非標準)RegExp...

    RegExpオブジェクトのリテラル表示を取得

    regexp.toSource() : String

    返値
    RegExpオブジェクトのリテラル表示を文字列にして返します。
    解説
    toString関数と同じです。
    var re = new RegExp("ab+c", "i");
    alert( re.toSource() );  ///ab+c/i
    
    参照

    toString 関数 JS1.1RegExp...

    RegExpオブジェクトのリテラル表示を取得

    regexp.toString : String

    返値
    RegExpオブジェクトのリテラル表示を文字列にして返します。
    解説
    toSource関数と同じです。
    var re = new RegExp("ab+c", "i");
    alert( re.toString() );  // ab+c/i
    
    参照

    input クラスプロパティ JS1.2 (非推奨)RegExp...

    パターンマッチングに使用されるテキストを指定

    RegExp.input : String
    RegExp.$_ : String

    解説
    regexp.exec()やregexp.test()に何も文字列が渡されない場合にパターンマッチングに使用されるテキストを指定します。

    lastMatch クラスプロパティ JS1.2 (非推奨)RegExp...

    最後にマッチングのテキスト(read only)

    RegExp.lastMatch : String
    RegExp["$&"] : String

    解説
    RegExpまたはStringのパターンマッチングメソッドで実行された最後の成功したマッチングのテキストを表します。

    lastParen クラスプロパティ JS1.2 (非推奨)RegExp...

    最後の括弧付きサブ表現にマッチしたテキスト(read only)

    RegExp.lastParen : String
    RegExp["$+"] : String

    解説
    RegExpまたはStringのパターンマッチングメソッドが実行した最後に成功したマッチングでの最後の括弧付きサブ表現にマッチしたテキストを表します。

    leftContext クラスプロパティ JS1.2 (非推奨)RegExp...

    最後にマッチしたサブストリングの前のテキスト(read only)

    RegExp.leftContext : String
    RegExp["$`"] : String

    解説
    RegExpまたはStringのパターンマッチングメソッドが実行した最後のマッチングでマッチしたサブストリングの前のテキストを表します。

    multiline クラスプロパティ JS1.2 (非推奨)RegExp...

    パターンマッチングがマルチラインモードで行われているかどうか

    RegExp.multiline : Boolean
    RegExp["$*"] : Boolean

    解説
    パターンマッチングがマルチラインモードで行われているかどうかを示します。このプロパティがtrueの場合は、^や$のパターンは、文字列の先頭と終端だけではなく、その文字列の行の先頭と終端もマッチングを行います。RegExp.multilineは読み書き可能なプロパティなので、いつでも設定できます。

    rightContext クラスプロパティ JS1.2 (非推奨)RegExp...

    最後にマッチしたサブストリングの後のテキスト(read only)

    RegExp.rightContext : String
    RegExp["$'"] : String

    解説
    RegExpまたはStringのパターンマッチングメソッドが実行した最後に成功したマッチングでマッチしたサブストリングのあとのテキストを表します。

    $n クラスプロパティ JS1.2 (非推奨)RegExp...

    最後にマッチした括弧に囲まれたサブ表現(read only)

    RegExp.$1 : String
    RegExp.$2 : String
      ・
    RegExp.$9 : String

    解説
    最後に成功したマッチングで1番目から9番目にマッチした括弧に囲まれたサブ表現を持っています。このマッチングは、RegExpまたはStringパターンマッチングメソッドで試みられたものです。正規表現の括弧付きのサブ表現が9個以下の場合は、すべてのプロパティが使用されないことがあります。もし正規表現に9個以上の括弧付きサブ表現がある場合には、9番目よりあとの値は保存されません。。

    String クラス ...

    文字列のラッパークラスです。
    
    文字列(リテラル)と文字列オブジェクトとは違います。
      s1 = "foo";             // 文字列(リテラル)データ作成
      s2 = new String("foo"); // 文字列オブジェクト作成
    
    文字列(リテラル)データは文字列オブジェクトの関数が直接使えます。
    これは、JavaScriptが内部で自動的に文字列オブジェクトに変換してから関数を呼び出し、一時的に作成
    されたその文字列オブジェクトは削除されます。
    

    constructorプロパティ オブジェクトのプロトタイプを生成する関数
    lengthプロパティ 文字列の長さを取得
    Stringコンストラクター 文字列オブジェクトの作成
    charAt関数 指示位置の文字を取得
    charCodeAt関数 指示位置の文字コード(Unicode)を取得
    concat関数 2つ以上の文字列を連結
    fromCharCodeクラス関数 Unicode列から文字列を作成
    indexOf関数 文字列検索
    lastIndexOf関数 後方から文字列検索
    localeCompare関数 文字列を辞書式順序で比較
    match関数 正規表現または検索文字列を使って検索結果を配列で取得較
    replace関数 正規表現または検索文字列を使って置換した文字列
    search関数 正規表現に一致する最初の文字列の位置を取得
    slice関数 部分文字列取り出し
    split関数 文字列を区切り文字で分割
    substr関数 指定位置から文字列取り出し
    substring関数 部分文字列取り出し
    toLocaleLowerCase関数 文字列内の文字を現在のロケールでの小文字に変換
    toLocaleUpperCase関数 文字列内の文字を現在のロケールでの大文字に変換
    toLowerCase関数 すべての英字を小文字に変換
    toSource関数 文字列オブジェクトを生成するソース
    toString関数 文字列オブジェクト内の文字列を取得
    toUpperCase関数 すべての英字を大文字に変換
    trim関数 前後の空白文字を削除
    trimLeft関数 前の空白文字を削除
    trimRight関数 後の空白文字を削除
    valueOf関数 文字列オブジェクト内の文字列を取得

    constructor プロパティ JS1.1String...

    オブジェクトのプロトタイプを生成する関数

    string.constructor : Object

    a = "abc"; // a = new String("abc");
    alert( a.constructor==String ); //true
     
    参照

    length プロパティ JS1.0String...

    文字列の長さを取得

    string.length : Integer [ReadOnly]

    解説
    文字列の長さを返します。
    var x = "ABCDEFG";
    var japanese = "日本語";
    alert( x.length );   // 7
    alert( japanese.length ); //3

    [ i ] プロパティ (非標準)String...

    i 番目の文字にアクセス

    string[i] : String [ReadOnly]

    解説
    i は、0 から length - 1 までの正の整数です。このプロパティは読み込み専用です。
    var x = "ABCDEFG";
    alert( x[5] );   // F
    

    String コンストラクター String...

    文字列オブジェクトの作成

    new String(string) : Stringオブジェクト

    引数
    string : String
    文字列
    返値
    作成された文字列オブジェクトを返します。

    charAt 関数 JS1.0String...

    指示位置の文字を取得

    string.charAt(index) : String

    引数
    index : Integer
    0~文字の長さ-1
    返値
    先頭からindex番目の文字を返します。先頭はindex=0
    indexが0~文字の長さ-1外なら空文字列を返します。
    var anyString="0123あいう";
    alert(anyString.charAt(2));  // 2
    alert(anyString.charAt(5));  // い
    
    参照

    charCodeAt 関数 JS1.2, 1.3String...

    指示位置の文字コード(Unicode)を取得

    string.charCodeAt([index]) : Integer

    引数
    index : Integer
    0~文字の長さ-1  デファオルトは0
    返値
    先頭からindex番目の文字コード(Unicode)を返します。先頭はindex=0
    Unicode値 0~128はASCIIコードと一致しています。
    解説
    funcの解説をします。
    alert( "ABC".charCodeAt(0) ); // 65
    
    参照

    concat 関数 JS1.2String...

    2つ以上の文字列を連結

    string.concat(string2[, string3, ..., stringN]) : String

    引数
    string2, string3, ..., stringN : String
    連結される文字列
    返値
    連結した文字列を返します。
    解説
    funcの解説をします。
    s1="Oh ";
    s2="what a beautiful ";
    s3="mornin'.";
    s4=s1.concat(s2,s3);
    alert(s4); // "Oh what a beautiful mornin'." 
    

    fromCharCode クラス関数 JS1.2, 1.3String...

    Unicode列から文字列を作成

    String.fromCharCode([num1, ..., numN]) : String

    引数
    num1, ..., numN : Integer
    Unicode列
    返値
    Unicode列から生成された文字列を返します。
    解説
    funcの解説をします。
    alert( String.fromCharCode(65,66,67) );  // "ABC"
    
    参照

    indexOf 関数 JS1.0String...

    文字列検索

    string.indexOf(searchValue[, fromIndex]) : Integer

    引数
    searchValue : String
    String オブジェクト内で検索する文字列
    fromIndex : Integer
    検索開始位置 0~文字列長さ-1  省略した場合、文字列の先頭から検索が開始されます。
    返値
    String オブジェクト内で見つかった検索文字列の先頭位置を返します。
    見つからなければ-1を返します。
    "Blue Whale".indexOf("Blue")    // 0
    "Blue Whale".indexOf("Blute")   // -1
    "Blue Whale".indexOf("Whale",0) // 5
    "Blue Whale".indexOf("Whale",5) // 5
    "Blue Whale".indexOf("",9)      // 9
    "Blue Whale".indexOf("",10)     // 10
    "Blue Whale".indexOf("",11)     // 10 
    
    "Blue Whale".indexOf("blue") // -1 大文字・小文字は区別
    
    参照

    lastIndexOf 関数 JS1.0String...

    後方から文字列検索

    string.lastIndexOf(searchValue[, fromIndex]) : Integer

    引数
    searchValue : String
    String オブジェクト内で検索する文字列
    fromIndex : Integer
    検索開始位置 0~文字列長さ-1  省略した場合、文字列の末尾から検索が開始されます。
    返値
    String オブジェクト内で見つかった検索文字列の先頭位置を返します。
    見つからなければ-1を返します。
    "canal".lastIndexOf("a")   // 3
    "canal".lastIndexOf("a",2) // 1
    "canal".lastIndexOf("a",0) // -1
    "canal".lastIndexOf("x")   // -1 
    
    "Blue Whale, Killer Whale".lastIndexOf("blue") // -1  大文字・小文字は区別
    
    var anyString="Brave new world" 
    anyString.lastIndexOf("new") //6
    anyString.indexOf("new") //6
    
    参照

    localeCompare

    文字列を辞書式順序で比較

    string.localeCompare(str) : Integer

    引数
    str : String
    比較する文字列。
    返値
    2つの文字列(string,str)を辞書式順序で比較して、strが前にあれば正の整数を返します。同じであれば0を返します。 strが後にあれば負をを返します。
    "JavaScript".localeCompare("javascript"); //-32
    "JavaScript".localeCompare("javascript"); // 0
    "javascript".localeCompare("JavaScript"); //32
    

    match 関数 JS1.2String...

    正規表現または検索文字列を使って検索結果を配列で取得

    string.match(regexp) : Array

    引数
    regexp : RegExp | String
    正規表現パターンおよびフラグを含む RegExpオブジェクトを指定します。文字列を指定することもできます。
    regexp がRegExpオブジェクトでない場合は文字列に変換して、完全に一致する文字列の検索が実行されます。
    返値
    パターンに一致する文字列が見つからなかった場合、null を返します。
    一致する文字列が見つかった場合は、結果を配列にセットして返します。
    
    解説
    regexpにグローバル フラグ (g) が設定されていない場合、RegExpオブジェクト.exec(..)と同じ結果が返ってきます。
    0 に一致したサブ文字列がセットされ、1~n-1には正規表現内の(..)に対応したサブ文字列がセットされます。
    regexpにグローバル フラグ (g) が設定されている場合、要素 0 から n-1 には検出されたすべての一致がそれぞれセットされます。
    n は、返してきた配列の長さです。
    
    ss = "cdbBdbsbz dbd";
    myRe=/d(b+)(d)/i;
    myArray = ss.match(myRe);
    alert( myArray );  // dbBd,bB,d
    
    ss = "cdbBdbsbz dbd";
    myRe=/d(b+)(d)/ig;
    myArray = ss.match(myRe);
    alert( myArray );  // dbBd,dbd
    
    参照

    replace 関数 JS1.2, 1.3String...

    正規表現または検索文字列を使って置換した文字列

    ① string.replace(regexp, newSubStr) : String
    ② string.replace(regexp, func) : String

    引数
    regexp : RegExp | String
    正規表現パターンおよびフラグを含む RegExpオブジェクトを指定します。文字列を指定することもできます。
    regexp がRegExpオブジェクトでない場合は文字列に変換して、完全に一致する文字列の検索が実行されます。
    newSubStr : String
    検索で見つかった部分を置換する文字列を指定します。
    この文字列内に $x を含めて加工した文字列置換を行なえます。解説を参照してください。
    
    function : Function
    regexpと一致するサブ文字列が見つかったとき呼び出される関数を指定します。
    一致したサブ文字列をこの関数が返した文字列で置換します。
    この関数の仕様は以下のとうりです。
    function func( substr, m1, ..., mN, pos, text )
    {
      // substr : 一致したサブ文字列
      // m1, ..., mN : regexp の中で使用されている開き括弧に対応した検索結果
      // pos : 一致位置
      // text : この関数を呼び出した文字列オブジェクトの文字列
           ・
      // 処理
      return 置換文字列;
    }
    
    返値
    呼び出した文字列オブジェクトの文字列を正規表現または検索文字列を使って置換した文字列のコピーを返します。
    
    解説
    引数newSubStrの文字列内で使える $x は、置換処理を動的に行なえます。$x は以下の文字列置換を行ないます。
    
    $$ $ に置き換えます。
    $& 一致したサブ文字列を置き換えます。
    $` 一致したサブ文字列の前の部分の文字列を置き換えます。
    $' 一致したサブ文字列の後の部分の文字列を置き換えます。
    $n n は0~99までの整数。n 番目の(..)に対応した文字列を置き換えます。
    // regexpを文字列とした場合
    s = "This is a pen. This is a box.";
    alert( s.replace("This","That") );  // That is a pen. This is a box.
    
    // regexpに gi フラッグをつけた場合
    re = /apples/gi;
    str = "Apples are round, and apples are juicy.";
    newstr=str.replace(re, "oranges");
    alert(newstr);   // oranges are round, and oranges are juicy.
    
    // 置換文字列で $x を使用した場合
    ss = "The rain in Spain falls mainly in the plain.";
    re = /(\S+)(\s+)(\S+)/g;
    r = ss.replace(re, "$3$2$1");
    alert( r );   // rain The Spain in mainly falls the in plain.
    
    // 置換関数を第二引数値とした場合
    function replaceFunc( substr, m1, pos, text )
    {
      return (((m1 - 32) * 5/9) + "C");
    }
    ss = "Water freezes at 32F and boils at 212F.";
    re = /(\d+(\.\d*)?)F\b/g;
    r = ss.replace( re, replaceFunc );
    alert( r );   // Water freezes at 0C and boils at 100C.
    

    search 関数 JS1.2String...

    正規表現に一致する最初の文字列の位置を取得

    string.search(regexp) : Integer

    引数
    regexp : RegExp | String
    正規表現パターンおよびフラグを含む RegExpオブジェクトを指定します。文字列を指定することもできます。
    regexp がRegExpオブジェクトでない場合は文字列に変換して、完全に一致する文字列の検索が実行されます。
    返値
    一致する文字列が見つかった場合、その位置を返します。位置は0~です。
    一致する文字列が見つからなかった場合は、-1 を返します。
    ss = "ABCDEFG";
    // Match !
    if (ss.search(/def/i) != -1) {
        alert("Match");
    }
    // No match !
    if (ss.search("def") != -1) {
        alert("Match");
    }
    

    slice 関数 JS1.0String...

    部分文字列取り出し

    string.slice(start[, end]) : String

    引数
    start : Integer
    取り出しを開始する、0 から始まるインデックス。
    end : Integer
    取り出しを終了する、0 から始まるインデックス。
    省略された場合、slice メソッドは、文字列の最後までを取り出します。
    返値
    start から end の前の文字までを含む文字列を返します。
    解説
  • start < 0 なら, (文字列長さ - start) とします。
  • end > 文字列長さ なら, end = 文字列長さとします。
  • end < 0 なら, end は (文字列長さ - end) とします。
  • start >= end なら, 空文字列を返します。
  • var anyString="abcdefgh" 
    
    // "abc"
    print(anyString.slice(0,3));
    
    // "efg"
    print(anyString.slice(4,7));
    
    // "efgh"
    print(anyString.slice(4));
    
    // "abcdefgh"
    print(anyString.slice(0,10)) 
    print(anyString.slice(0));
    print(anyString.slice());
    
    // "adef"
    print(anyString.slice(3,-2));
    

    split 関数 JS1.1String...

    文字列を区切り文字で分割

    string.split([separator, limit]) : Array

    引数
    separator : String
    文字列を区切る 1 つまたは複数の文字を表す、Regular Expression オブジェクトの文字列またはインスタンスを指定します。省略した場合、文字列全体を含む単一要素の配列が返されます。
    limit : Number
    配列に返される要素の数を制限する値を指定します。 
    返値
    複数の文字列に分割された文字列を配列にを返します。
    var s = "abcd efg h ijk";
    var ans = s.split(" ");
    // ans[0]:abcd ans[1]:efg ans[2]:h ans[3];ijk
    
    参照

    substr 関数 JS1.0String...

    指定位置から文字列取り出し

    string.substr(start[, length]) : String

    引数
    start : Integer
    文字を取り出す位置( 0 から文字列の長さ以下までの整数)。
    start が負の数である場合、substr はそれを文字列の最後から数えた文字のインデックスとして使用します。
    length : Integer
    取り出す文字の数。
    返値
    文字列内の、指定位置からの指定された長さを持つ部分を返します。
    str = "abcdefghij"
    print(str.substr(1,2))  // bc
    print(str.substr(-2,2)) // ij
    print(str.substr(1))    // bcdefghij
    print(str.substr(1,20)) // bcdefghij
    print(str.substr(20,2)) // ""
    
    参照

    substring 関数 JS1.0String...

    部分文字列取り出し

    string.substring(ia, [ib]) : String

    引数
    ia : Integer
    0 と 文字列の長さから 1 引いた数の間にある整数。
    ib : Integer
    0 と文字列の長さの間にある整数。省略した場合、文字列の長さ。
    返値
    ia から ib 未満の文字を取り出します。
    解説
  • ia==ib 等しい場合、 substring は空の文字列を返します。
  • ib が省略された場合、substring は文字列の最後までの文字を取り出します。
  • 両方の引数が 0 未満、あるいは、 NaN だった場合、 それは 0 だったものとして扱われます。
  • 両方の引数が stringName.length より大きかった場合、それは stringName.length だったものとして扱われます。
  • var anyString="abcdefgh" 
    
    // "abc"
    print(anyString.substring(0,3));
    print(anyString.substring(3,0));
    
    // "efg"
    print(anyString.substring(4,7));
    print(anyString.substring(7,4));
    
    // "abcdefg"
    print(anyString.substring(0,7));
    
    // "abcdefgh"
    print(anyString.substring(0,8));
    print(anyString.substring(0,10));
    
    // "efgh"
    print(anyString.substring(4));
    
    参照

    toLocaleLowerCase 関数 String...

    文字列内の文字を現在のロケールでの小文字に変換

    string.toLocaleLowerCase() : String

    返値
    文字列内の文字を現在のロケールでの小文字に変換します。ほとんどの言語で、このメソッドは、toLowerCase と同じ結果を返します。

    toLocaleUpperCase 関数 String...

    文字列内の文字を現在のロケールでの大文字に変換

    string.toLocaleUpperCase() : String

    返値
    文字列内の文字を現在のロケールでの大文字に変換します。ほとんどの言語で、このメソッドは、toUpperCase と同じ結果を返します。

    toLowerCase 関数 JS1.0String...

    すべての英字を小文字に変換

    string.toLowerCase() : String

    返値
    すべての英字を小文字に変換した文字列を返します。
    var upperText="ALPHABET"
    alert(upperText.toLowerCase()) // alphabet
    
    参照

    toSource 関数 JS1.3(非標準)String...

    文字列オブジェクトを生成するソース

    string.toSource() : String

    返値
    文字列オブジェクトを生成するソース文字列を返します。
    str = "abcdefghij"
    alert( str.toSource() ); // (new String("abcdefghij"))
    
    参照

    toString 関数 JS1.1String...

    文字列オブジェクト内の文字列を取得

    string.toString() : String

    返値
    文字列オブジェクト内の文字列を返します。
    str = "abcdefghij"
    alert( str.toString() ); // abcdefghij
    
    参照

    toUpperCase 関数 JS1.0String...

    すべての英字を大文字に変換

    string.toUpperCase() : String

    返値
    すべての英字を大文字に変換した文字列を返します。
    var lowerText="alphabet"
    alert(upperText.toUpperCase()) // ALPHABET
    
    参照

    trim 関数 JS1.8.1String...

    前後の空白文字を削除

    string.trim() : String

    返値
    前後の空白文字を削除した文字列を返します。
    参照

    trimLeft 関数 JS1.8.1String...

    前の空白文字を削除

    string.trimLeft() : String

    返値
    前の空白文字を削除した文字列を返します。
    参照

    trimRight 関数 JS1.8.1String...

    後の空白文字を削除

    string.trimRight() : String

    返値
    後の空白文字を削除した文字列を返します。
    参照

    valueOf 関数 JS1.1String...

    文字列オブジェクト内の文字列を取得

    string.valueOf() : String

    返値
    文字列オブジェクト内の文字列を返します。
    str = "abcdefghij"
    alert( str.valueOf() ); // abcdefghij
    
    参照

    WeakMap クラス ...

    WeakMapは、オブジェクトをキーとするkey/valueマップを扱うクラスです。

    WeakMapコンストラクタ WeakMapオブジェクト作成
    get関数 取得関数
    set関数 設定関数
    has関数 所有判定関数
    delete関数 削除関数

    WeakMap コンストラクター ECMAScript Harmony proposalWeakMap...

    WeakMapオブジェクトを作成

    new WeakMap() : WeakMap

    var wm1 = new WeakMap(),  
        wm2 = new WeakMap();  
    var o1 = {},  
        o2 = function(){},  
        o3 = window;  
      
    wm1.set(o1, 37);  
    wm1.set(o2, "azerty");  
    wm2.set(o1, o2); // a value can be anything, including an object or a function  
    wm2.set(o3, undefined);  
    wm2.set(wm1, wm2); // keys and values can be any objects. Even WeakMaps!  
      
    wm1.get(o2); // "azerty"  
    wm2.get(o2); // undefined, because there is no value for o2 on wm2  
    wm2.get(o3); // undefined, because that is the set value  
      
    wm1.has(o2); // true  
    wm2.has(o2); // false  
    wm2.has(o3); // true (even if the value itself is 'undefined')  
      
    wm1.has(o1);   // true  
    wm1.delete(o1);  
    wm1.has(o1);   // false 
    

    get 関数 ECMAScript Harmony proposalWeakMap...

    取得関数

    weakmap.get(key [, defaultValue]) : SomeType

    set 関数 ECMAScript Harmony proposalWeakMap...

    設定関数

    weakmap.set(key, value) : WeakMap

    has 関数 ECMAScript Harmony proposalWeakMap...

    所有判定関数

    weakmap.has(key) : Boolean

    delete 関数 ECMAScript Harmony proposalWeakMap...

    削除関数

    weakmap.delete(key) : Boolean


    ctypes モジュール ...

    ctypes モジュールは、ダイナミックライブラリーにある関数を呼び出したり、C言語の型やデータを操作できる機能を提供します。

    たとえば、WindowsのMessageBox関数を実行してみましょう。
    /* ダイナミックライブラリーをロード */
    var lib = ctypes.open("C:\\WINDOWS\\system32\\user32.dll");
     
    /* call関数の接続と signatureを宣言 */
    var msgBox = lib.declare("MessageBoxW",
                             ctypes.winapi_abi,
                             ctypes.int32_t,
                             ctypes.int32_t,
                             ctypes.jschar.ptr,
                             ctypes.jschar.ptr,
                             ctypes.int32_t);
    var MB_YESNOCANCEL = 3;
     
    var ret = msgBox(0, "Hello world", "title", MB_YESNOCANCEL);
     
    lib.close();
    

    次に、構造体を引数とする関数を呼び出すサンプルをみましょう。
    *** test.dll ***
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
    					 )
    {
        return TRUE;
    }
    
    struct Point {
    	double x;
    	double y;
    };
    
    extern "C" __declspec(dllexport)
    void MovePoint( Point* pt, double dx, double dy) {
    	pt->x += dx;
    	pt->y += dy;
    }
    
    *** test.dll にある MovePoint関数を使うJavaScriptプログラム ***
    var structPoint = ctypes.StructType("Point", [{x: ctypes.double}, {y: ctypes.double}]);
    var testLib = ctypes.open("test.dll");
    
    var fnMovePoint = testLib.declare("MovePoint",
        ctypes.default_abi,
        ctypes.void_t,
        structPoint.ptr, ctypes.double, ctypes.double);
    
    var pnt = structPoint({x:10.0, y:20.0});
    fnMovePoint(pnt.address(), 1.0, 2.0);
    
    print( pnt.x, pnt.y);	// 11 22
    
    testLib.close();
    
    *** test.dll にある MovePoint関数を使うJavaScriptプログラム(DSL版) ***
    var {Point, MovePoint} = DSL.c(`
    
    typedef struct Point {
    	double x;
    	double y;
    } Point;
    
    void MovePoint( Point* pt, double dx, double dy);
    
    #pragma JSEXT dl "test.dll" //相対パスまたは絶対パス  実行exe内なら #pragma JSEXT dl main
    
    `);
    
    var pnt = Point({x:10.0, y:20.0});
    MovePoint(pnt.address(), 1.0, 2.0);
    
    print( pnt.x, pnt.y);	// 11 22
    

    このようにctypesモジュールを使って C言語など他の言語で作成されたDLLモジュールを呼び出せます。

    ABI 定数
    default_abi, stdcall_abi, winapi_abi
    native関数呼び出しに使うABI定数
    定義済みデータタイプ
    Primiteive type --- int8_t, uint8_t, ...
    C type --- bool,short, ...
    character type --- char,signed_char, ...
    type-size depending on platform --- size_t, ...
    JavaScript char type --- jschar
    Special C types --- void_t, voidptr_t
    Large integer types --- Int64, UInt64
    定義済みデータタイプ
    ArrayType 関数配列型を作成
    cast 関数データタイプをキャスト
    CDataFinalizer 関数Cデータを終了処理するCDataFinalizerオブジェクの作成
    FunctionType 関数C関数を表現する型を作成
    getRuntime 関数JavaScriptランタイムエンジンのアドレスを取得
    libraryName 関数正式なライブラリーファイル名を取得
    open 関数ライブラリーをオープン
    PointerType 関数ポインター型を作成
    StructType 関数構造体型を作成

    ABI 定数 JS1.1ctypes...

    native関数呼び出しに使うABI定数(ABI := Application Binary Interface)

    定数説明
    ctypes.default_abi標準ライブラリーの呼び出し cdeclに対応 可変個引数が可能な関数
    ctypes.stdcall_abiWindowsで stdcallで宣言された関数呼び出しに使用
    ctypes.winapi_abiWindows system関数呼び出し stdcall_abiと同じ

    定義済み データタイプ JS1.1ctypes...

    全platformで同じtype
    Type説明
    ctypes.int8_t符号付き8-bit整数
    ctypes.uint8_t符号なし8-bit整数
    ctypes.int16_t符号付き16-bit整数
    ctypes.uint16_t符号なし16-bit整数
    ctypes.int32_t符号付き32-bit整数
    ctypes.uint32_t符号なし32-bit整数
    ctypes.int64_t符号付き64-bit整数
    ctypes.uint64_t符号なし64-bit整数
    ctypes.float32_t32-bit浮動小数点数値
    ctypes.float64_t64-bit浮動小数点数値
    64-bit整数はJavaScriptがサポートする数値の枠を超えてしまうため、ctypes.int64_tとctypes.uint64_tはJavaScript数値へ変換しません。代わりにctypes.Int64とctypes.UInt64オブジェクトへ変換します。これらオブジェクトはCDataオブジェクトよりJavaScriptオブジェクトであります。詳しくは64-bit integersを参照。

    platform上のC言語に対応したtype
    Type説明
    ctypes.boolbool type
    ctypes.shortshort integer
    ctypes.unsigned_shortunsigned short integer
    ctypes.intint integer
    ctypes.unsigned_intunsigned int integer
    ctypes.long long integer
    longが32-bitか64-bitかわからないので、互換性のため全platformで Int64 JavaScriptオブジェクトへ自動的に変換されます。
    ctypes.unsigned_long unsigned long integer
    unsigned longが32-bitか64-bitかわからないので、互換性のため全platformで UInt64 JavaScriptオブジェクトへ自動的に変換されます。
    ctypes.long_long少なくても64-bit幅のinteger type
    ctypes.unsigned_long_long少なくても64-bit幅のunsigned integer type
    ctypes.float単精度浮動小数点数値
    ctypes.double倍精度浮動小数点数値

    character typeは8-bit値でC-charと同じように振る舞い、convert以外 int8_tとuint8_tへ 似てます。
    たとえば、ctypes.char.array(30)(str)は文字列strをUTF-8へconvertし、配列型のCDataオブジェクトになります。
    Type説明
    ctypes.charplatform上のC-charのように振舞う character type
    ctypes.signed_charplatform上のC-charのように振舞う signed character
    ctypes.unsigned_charplatform上のC-unsigned charのように振舞う unsigned character

    platformでサイズが違うtypeは32-bitか64-bitわからないので、JavaScript数値へconvertせず、代わりにctypes.Int64またはctypes.Uへconvertします。詳しくは64-bit integersを参照。
    Type説明
    ctypes.size_tplatformにdependしたサイズのtype
    ctypes.ssize_tplatformにdependしたサイズのtype
    ctypes.intptr_tポインタをplatformにdependしたintegerで表現
    ctypes.uintptr_tポインタをplatformにdependしたunsigned integerで表現

    16 Bit C Unicodeは jschar typeで操作します。
    Type説明
    ctypes.jschar 16-bit unsinged character. uint16_tとは違って、C jschar値は自動的にJavaScript 1文字へconvertされます。Unicode character。

    特別な意味を持つ C type
    Type説明
    ctypes.void_t Cのvoid type。 関数が値を返さないこと意味するtype。
    ctypes.voidptr_t Cのvoid* type。 未定なtypeへのポインタ。

    JavaScriptは large(64-bit)integerはサポートしてないため、64-bit integer をアクセスする 2つのdata typeを設けてます。
    Type説明
    ctypes.Int64 64-bit signed integer.
    ctypes.UInt64 64-bit unsigned integer.


    型変換 JS1.1ctypes...

    Type conversion - Mozilla|MDN を参照してください。

    ArrayType 関数 ctypes...

    配列型を作成

    ctypes.ArrayType(type[, length]) : ctypes.CType

    引数
    type : ctypes.CType
    配列の要素type
    length : Integer
    配列サイズ。省略した場合、サイズ不定の配列typeが作成されます。
    返値
    新しく作成された配列typeを返します。
    例外
    TypeError
    typeがTypeでなかったり、type.sizeがundefinedであった場合、lengthが配列のサイズとして不適切な場合、throwされます。
    RangeError
    作成される配列のサイズがsize_tやJavaScript数値として表せない場合、throwされます。

    cast 関数 ctypes...

    データタイプをキャスト

    ctypes.cast(data, type) : ctypes.CData

    引数
    data : ctypes.CData
    キャストしたいオブジェクト
    type : ctypes.CType
    このタイプへキャスト。typeはPredefined data typesかユーザー定義のtypeです。
    返値
    dataと同じCDataオブジェクト。ただし、タイプは引数のtypeです。

    CDataFinalizer 関数 ctypes...

    Cデータを終了処理するCDataFinalizerオブジェクを作成します。

    ctypes.CDataFinalizer(cdata, finalzer) : ctypes.CDataFinalizer

    引数
    cdata : ctypes.CData
    終了処理されるCデータ
    finalzer : ctypes.CData
    Cデータを終了処理するC関数
    signatureは void analyzer(cdata);
    返値
    ctypes.CDataFinalizerオブジェクトを返します。
    このオブジェクト内には 2つの引数値が組み込まれ オブジェクトが解放されるとき、
    analyzer(cdata)
    が実行されます。
    var L =
    #.dl{
    struct tagMyPoint {
      double x, y;
    };
    typedef struct tagMyPoint MyPoint;
    
    MyPoint*  newMyPoint();
    void  setMyPoint(MyPoint* pp, double x, double y);
    void  finalizeMyPoint(MyPoint* pp);
    
    #pragma JSEXT dl main
    }#
    
    function createMyPoint() {
      var p = L.newMyPoint();
      return ctypes.CDataFinalizer(p, L.finalizeMyPoint);
    }
    
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);
    
    mypt=null;
    gc();	// L.finalizeMyPoint(p)が実行される
    

    FunctionType 関数 ctypes...

    関数タイプを作成

    ctypes.FunctionType(abi, returnType, [argType1, ...] ) : ctypes.CType

    引数
    abi : ABI定数
    関数の呼び出し方
    returnType : ctypes.CType
    関数が返値のタイプ
    argType1... argTypeN : ctypes.CType
    関数の引数タイプ
    最後に '...' 文字列をセットすれば、可変個引数を受け取れる関数タイプとなります。
    返値
    C言語での関数タイプ
      returnType (*) ([argType1, ..., argTypeN]);
    と同じタイプを作成します。
    例外
    TypeError
    abiがABI定数でなかったり、returnType,argType1... argTypeNがctype.CTypeでない場合、throwされます。

    getRuntime 関数 ctypes...

    JavaScriptランタイムエンジンのアドレスを取得

    ctypes.getRuntime( type ) : ctypes.CData

    引数
    type : ctypes.CType
    ポインタ型
    返値
    現在動作中のJavaScriptランタイムエンジンのアドレスを返します。
    var JSRuntime_Ptr = ctypes.StructType("JSRuntime").ptr;
    var pjsrutime = ctypes.getRuntime(JSRuntime_Ptr);
    

    libraryName 関数 ctypes...

    正式なライブラリーファイル名を取得

    ctypes.libraryName( name ) : String

    引数
    name : String
    ライブラリー名
    返値
    ploatformでの仕様に準じたライブラリーのファイル名が返されます。Windowsなら nameに拡張子 .dllが付加されます。

    open 関数 ctypes...

    ライブラリーをオープン

    ctypes.open( libSpec ) : ctypes.Library

    引数
    libSpec : String
    オープンしたいnativeライブラリーをpathnameで指定します。
    実行中のexeプログラムをライブラリーとする場合は、"Executable"をセットしてください。
    返値
    オープンされたライブラリーのオブジェクトを返します。

    PointerType 関数 ctypes...

    ポインター型を作成

    ctypes.PointerType( typeSpec ) : ctypes.CType

    引数
    typeSpec : ctypes.CType
    タイプtypeSpec。
    返値
    指定したタイプtypeSpecへのポインタータイプを返します。
    例外
    TypeError
    typeSpecがCTypeオブジェクトでない場合、throwされます。
    // 32-bit integerへのポインターを作成
    var intPtrType = ctypes.PointerType(ctypes.int32_t);
    

    StructType 関数 ctypes...

    構造体型を作成

    structType = ctypes.StructType( name[, fields] ) : ctypes.CType

    引数
    name : String
    構造体名。
    fields : Array [ { field1 : type1 }, ... ]
    fieldの記述内容を列挙した配列。
    省略した場合、不定な構造体とし後でdefine()メソッドを使って定義できます。
    参照:Opaque structures
    返値
    作成された構造体 CTypeオブジェクトを返します。
    /*
      C言語
      struct User {
        int serialNumber;
        char *userName;
      };
    */
    var structUser = ctypes.StructType("User",
        [ {serialNumber : ctypes.int}, {userName : ctypes.char.ptr} ]
    );
    

    ctypes.CData クラス ...

    CDataオブジェクトは C言語が扱うデータや関数のアドレスを現します。

    constructor プロパティデータのタイプ
    value プロパティJavaScriptと等しい値
    structmember プロパティ構造体のメンバー
    contents プロパティポインタ先のデータ
    length プロパティ配列のサイズ
    address 関数データへのポインタを得る
    toSource, toString 関数データ作成JavaScriptコードを得る
    isNull 関数ポインタのnull判定
    increment 関数ポインタを1つ進める
    decrement 関数ポインタを1つ戻す
    addressOfField 関数構造体メンバーへのポインタを得る
    addressOfElement 関数配列要素へのポインタを得る
    readString, readStringReplaceMalformed 関数character配列をJavaScriptの文字列へ変換

    constructor プロパティ CData...

    データのタイプ

    cdata.constructor : ctypes.CType [ReadOnly]

    解説
    cdataのデータタイプを取得できます。
    注意:これは 必ず ctypes.void_t や サイズのない配列タイプにはならない。

    value プロパティ CData...

    JavaScriptと等しい値。

    cdata.value : Any
    cdata.value = v

    解説
    getの場合、JavaScriptとして等しい値を返します。ただし、JavaScript値へconvertできなかったら TypeErrorをthrowします。
    setの場合、cdata の中身が cdata.constructor(v) で取り替えられてるようだ。
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    var p = Point();
    p.value = {x:20,y:30};
    
    print(p); // Point(20, 30)
    

    structmember プロパティ CData...

    構造体のメンバー

    cdata.structmember : Any
    cdata.structmember = v

    解説
    cdataのタイプが構造体である場合、構造体メンバーがプロパティ名となります。
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    var p = Point({x:20,y:30});
    
    print(p.x); // 20
    
    p.y = 40;
    print(p.y); // 40
    

    contents プロパティ CData...

    ポインタ先のデータ

    cdata.contents : ctypes.CData

    解説
    contentsプロパティは cdataがポインタデータであるとき、意味を持ちます。
    getでは ポインタ先のデータの参照を返します。
    setでは データをCデータへconvertしてメモリ先へ書き込みます。もし convertに失敗したら、TypeErrorがthrowされます。
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    var p = Point({x:20,y:30});
    var ptr = p.address();
    
    print(ptr.contents.x, ptr.contents.y);  // 20 30
    
    ptr.contents = {x:1,y:2};
    print(ptr.contents.x, ptr.contents.y);  // 1 2
    print(p.x, p.y);  // 1 2
    

    length プロパティ CData...

    配列のサイズ

    cdata.length : Integer [ReadOnly]

    解説
    lengthプロパティは cdataが配列データであるとき、意味を持ちます。
    index番目の要素は cdata[index]で参照(get/set)できます。

    address 関数 CData...

    データへのポインタを得る

    cdata.address() : ctypes.CData

    返値
    cdataへのポインタを返します。そのタイプはctypes.PointerType(ctype.constructor)となります。

    toSource, toString 関数 CData...

    データ作成JavaScriptコードを得る

    cdata.toSource() : String
    cdata.toString() : String

    返値
    文字列"t(arg)"を返し、eval()関数で実行すると 元のcdataと同じコピーが作成されます。
    すなわち、eval(cdata.toSource())は、cdataのコピーとなります。
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    var p = Point({x:20,y:30});
    print( p.toSource() );  // Point(20,30)
    

    isNull 関数 CData...

    ポインタのnull判定

    cdata.isNull() : Boolean

    返値
    cdataがポインタタイプであるとき 有効な関数で、ポインタ値がnullならtrueを返し、そうでなければfalseを返します。

    increment 関数 CData...

    ポインタを1つ進める

    cdata.increment() : ctypes.CData

    返値
    cdataがポインタタイプであるとき 有効な関数で、1つ進めたポインタ値を返します。

    decrement 関数 CData...

    ポインタを1つ戻す

    cdata.decrement() : ctypes.CData

    返値
    cdataがポインタタイプであるとき 有効な関数で、1つ戻したポインタ値を返します。

    addressOfField 関数 CData...

    構造体メンバーへのポインタを得る

    cdata.addressOfField( name ) : ctypes.CData

    引数
    name : String
    構造体メンバー名。
    返値
    cdataが構造体であるとき 有効な関数で、ctypeの構造体メンバーnameへのポインタを返します。
    例外
    TypeError
    nameがJavaScript文字列でなかったり、構造体のメンバーでない場合、throwされます。

    addressOfElement 関数 CData...

    配列要素へのポインタを得る

    cdata.addressOfElement(index) : ctypes.CData

    返値
    cdataが配列であるとき 有効な関数で、配列cdataのindex要素へのポインタを返します。
    例外
    TypeError
    indexがJavaScript数値でなかったり、配列のインデックス範囲外ならば、throwされます。

    readString, readStringReplaceMalformed 関数 CData...

    character配列をJavaScriptの文字列へ変換

    cdata.readString() : String
    cdata.readStringReplaceMalformed() : String

    返値
    cdataが8-bit または 16-bitのchracterあるいはintegerの配列であるとき 有効な関数で、cdataに含まれる文字列をJavaScript文字列にconvertして返します。
    解説
    cdataが8-bit stringである場合、UTF-8コードとして解釈してJavaScript文字列へconvertします。

    cdataが変換できないコードが含んでいる場合、
      readString関数ではエラーをthrowし、
      readStringReplaceMalformed関数では ? に置き換えます。

    ctypes.CDataFinalizer クラス ...

    CDataFinalizerオブジェクは、Cデータの終了処理をJavaScriptエンジンに任せてくれます。

    C言語ではリソースを手動で管理します。malloc関数でメモリ確保し、使い終わったらfree関数で解放。open関数でファイルをオープンし、close関数で閉じます。
    一方 JavaScript言語では 作成されたリソースが変数で参照されなくなったりJavaScriptが終了すると GC(ガーベージコレクション)が自動でリソースを解放してくれます。

    ctypesはJavaScript言語内からC言語のリソースを扱うことを許すモジュールです。このC言語のリソースはGC対象でないため手動管理しなければいけません。すなわち 作成したら解放するコードを書く必要があります。
    一般的にリソースを操作するプログラムでは、リソース解放するタイミングや忘れでバグを入れてしまうことが多くあります。
    CDataFinalizerオブジェクを使えば、C言語リソースの解放をJavaScriptエンジンのGCを使って自動化します。

    CDataFinalizerオブジェクは、ctypes.CDataFinalizer関数で作れます。
      var  cdataFinalizer = ctypes.CDataFinalizer(cdata, finalyzer);//cdata:C言語リソース, finalyzer:cdataを解放するC関数
    
    cdataFinalizer内部には、{{cdata, finalyzer}}を組み込んでおり、cdataFinalizerがGCで解放されるとき finalyzer(cdata)が実行されます。
    また、C関数の引数にcdataFinalizerを渡すとcdataに変換されてます。

    以下のサンプルは、CDataFinalizerオブジェクを使ってC言語リソースの解放を自動化します。
    var L =
    #.dl{
    struct tagMyPoint {
      double x, y;
    };
    typedef struct tagMyPoint MyPoint;
    
    MyPoint*  newMyPoint();
    void  setMyPoint(MyPoint* pp, double x, double y);
    void  finalizeMyPoint(MyPoint* pp);
    
    #pragma JSEXT dl main
    }#
    
    function createMyPoint() {
      var p = L.newMyPoint();//C言語リソース作成
      return ctypes.CDataFinalizer(p, L.finalizeMyPoint);
    }
    
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);  //CDataFinalyzerオブジェクトをC関数の引数とするとCデータに変換される
    mypt=null;
    
    //   ・
    //   ・
    //   ・
    
    gc();	//C言語リソース解放 L.finalizeMyPoint(p)が実行される 
    

    dispose 関数Cデータを終了処理
    forget 関数組み込んだCデータを切り離す
    readString 関数Cデータを文字列化する
    toSource 関数CDataFinalizerオブジェクトの作成ソースコードを得る
    toString 関数Cデータの文字列表示

    dispose 関数 CDataFinalizer...

    Cデータを終了処理する

    cdataFinalizer.dispose() : void

    解説
    CDataFinalyzerオブジェクトにdispose()を実行させた後、CデータとC関数finalyzerが切り離されます。したがって、GC時にはFinalyzer(cdata)は実行されません。また、C関数の引数でcデータへの変換もされません。
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);  //CDataFinalyzerオブジェクトをC関数の引数とするとCデータに変換される
    
    mypt.dispose(); //C言語リソース解放 L.finalizeMyPoint(p)が実行される
    
    L.setMyPoint(mypt, 5.6, 7.8);  //エラー
    

    forget 関数 CDataFinalizer...

    組み込んだCデータを切り離す

    cdataFinalizer.forget() : ctypes.CData

    返値
    cdataFinalizerに組み込まれたCデータを返します。
    解説
    CDataFinalyzerオブジェクトからforget()でCデータを切り離すと、C関数finalyzerも切り離されます。したがって、GC時にはFinalyzer(cdata)は実行されません。また、C関数の引数でcデータへの変換もされません。
    以降、Cデータの解放処理は自動化されないので手動で行う必要があります。
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);  //CDataFinalyzerオブジェクトをC関数の引数とするとCデータに変換される
    
    var pt = mypt.forget();
    
    L.finalizeMyPoint(pt);	//手動でCデータを解放
    

    readString 関数 CDataFinalizer...

    Cデータを文字列化する

    cdataFinalizer.readString() : String

    返値
    cdataがポインタタイプであるとき 有効な関数で、ポインタ値がnullならtrueを返し、そうでなければfalseを返します。
    var L =
    #.dl{
    char*  newMystr(char* s);
    void   mystrFinalizer(char* s);
    #pragma JSEXT dl main
    }#
    
    var pcstr = L.newMystr("abcd");
    var pcstrFinalizer = ctypes.CDataFinalizer(pcstr, L.mystrFinalizer);
    
    print(pcstrFinalizer.readString()); // abcd
    
    pcstrFinalizer = null;
    gc();
    

    toSource 関数 CDataFinalizer...

    Cデータの文字列表示

    dataFinalizer.toSource() : String

    返値
    CDataFinalizerオブジェクトの作成ソースコード文字列を返します。
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);  //CDataFinalyzerオブジェクトをC関数の引数とするとCデータに変換される
    
    print(mypt.toSource());
    /*
     ctypes.CDataFinalizer(tagMyPoint.ptr(ctypes.UInt64("0x45ed778")), ctypes.FunctionType(ctypes.default_abi, ctypes.void, [tagMyPoint.ptr]).ptr(ctypes.UInt64("0xd1d8ed")))
    */
    

    toString 関数 CDataFinalizer...

    Cデータの文字列表示

    dataFinalizer.toString() : String

    返値
    Cデータの文字列表示を返します。
    var mypt = createMyPoint();
    L.setMyPoint(mypt, 1.2, 3.4);  //CDataFinalyzerオブジェクトをC関数の引数とするとCデータに変換される
    
    print(mypt.toString()); // tagMyPoint.ptr(ctypes.UInt64("0x45ed778"))
    

    ctypes.CType クラス ...

    C言語のデータタイプを扱います。

    CType : プロパティ・関数・・・リスト
    CTypeオブジェクトすべて
    name プロパティタイプ名
    ptr プロパティタイプのポインター型
    size プロパティタイプのバイトサイズ
    ポインタータイプ
    targetType プロパティポインター先の型
    関数タイプ
    abi プロパティ関数のABI
    argTypes プロパティ関数引数の型
    returnType プロパティ関数の返値型
    isVariadic プロパティ可変個引数
    構造体
    fields プロパティ構造体のメンバーとそのタイプ
    define 関数不確定な構造体を 確定な構造体にする
    配列タイプ
    elementType プロパティ配列要素のタイプ
    length プロパティ配列のサイズ
    メンバー関数
    array 関数配列型作成
    toSource 関数型作成JavaScriptコードを得る
    toString 関数型名を得る

    name プロパティ CType...

    タイプ名

    ctype.name : String [ReadOnly]

    解説
    ctypeがprimitiveなタイプでは、対応するC言語のタイプ名となります。構造体ではコンストラクタへ渡した名前となります。その他、関数やポインタ、配列の場合、C言語として有効なフォーマットで表現されます。
    print( ctypes.int.name ); // int
    print( ctypes.int.ptr.name ); // int*
    
    const ArrayInt = ctypes.ArrayType(ctypes.int,5);
    print( ArrayInt.name ); // int[5]
    
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    print( Point.name ); // Point
    

    ptr プロパティ CType...

    タイプのポインター型

    ctype.ptr : ctypes.CType [ReadOnly]

    解説
    ctypes.PointerType(ctype)と同じ結果を返します。

    size プロパティ CType...

    タイプのバイトサイズ

    ctype.size : Integer [ReadOnly]

    解説
    タイプctypeのバイトサイズを返します。C言語のsizeof演算と同じ値になります。ただし、ctypes.void_t.size は undefined値となります。

    targetType プロパティ CType...

    ポインター先の型

    ctype.targetType : ctypes.CType [ReadOnly]

    解説
    ctypeがポインタタイプであるとき 有効なプロパティで、ctypeが指しているデータのタイプを返します。

    abi プロパティ CType...

    関数のABI(application binary interface)

    ctype.abi : ABI 定数 [ReadOnly]

    解説
    ctypeが関数タイプであるとき 有効なプロパティです。

    argTypes プロパティ CType...

    関数引数の型

    ctype.argTypes : ctypes.CType[] [ReadOnly]

    解説
    ctypeが関数タイプであるとき 有効なプロパティで、配列要素に関数の引数の型がセットされています。

    returnType プロパティ CType...

    関数の返値型

    ctype.returnType : ctypes.CType [ReadOnly]

    解説
    ctypeが関数タイプであるとき 有効なプロパティで、関数の返値型が配列要素に関数の引数の型を返します。

    isVariadic プロパティ CType...

    可変個引数を受け取る関数の判定

    ctype.isVariadic : Boolean [ReadOnly]

    解説
    ctypeが関数タイプであるとき 有効なプロパティで、可変個引数を受け取れる関数ならtrueを返し、そうでなければfalseを返します。

    fields プロパティ CType...

    構造体のメンバーとそのタイプ

    ctype.fields : [{ filed : type }, ... ] [ReadOnly]

    解説
    ctypeが関数タイプであるとき 有効なプロパティで、各構造体のメンバーとそのタイプをオブジェクト{ filed : type }を配列にして返します。
    const Point = new ctypes.StructType('Point', [  //const Point = ctypes.StructType('Point', [
    	{x: ctypes.double},
    	{y: ctypes.double}
    ]);
    print( uneval(Point.fields[0]) ); // ({x:ctypes.double})
    print( uneval(Point.fields[1]) ); // ({y:ctypes.double})
    

    define 関数 CType...

    不確定な構造体を 確定な構造体にする

    ctype.define( fields )

    引数
    fields : Array [ { field1 : type1 }, ... ]
    fieldの記述内容を列挙した配列。
    var someStructure = ctypes.StructType("someStructure");
    var anotherStruct = ctypes.StructType("anotherStruct", [ {field1: someStructure.ptr} ]);
    someStructure.define([ { ptrToAnotherStruct: anotherStruct.ptr } ]);
    

    elementType プロパティ CType...

    配列要素のタイプ

    ctype.elementType : ctypes.CType [ReadOnly]

    解説
    ctypeが配列タイプであるとき 有効なプロパティで、配列要素のタイプを返します。

    length プロパティ CType...

    配列のサイズ

    ctype.length : Integer [ReadOnly]

    解説
    ctypeが配列タイプであるとき 有効なプロパティで、配列要素のサイズを返します。
    ただし、配列サイズを指定していない配列タイプの場合、undefinedを返します。

    array 関数 CType...

    配列型を作成

    ctype.array( [n] ) : ctypes.CType

    引数
    n : Integer
    配列サイズ。省略した場合、サイズ不定の配列型が作成されます。
    返値
    ctypeを配列要素のタイプとする配列型を返します。
      ctypes.ArrayType(ctype[, n])
    と同じ結果が返ります。

    toSource 関数 CType...

    型作成JavaScriptコードを得る

    ctype.toSource() : String

    返値
    評価するとtypeと同じCタイプを現すとするJavaScriptコード(文字列)を返します。
    print( ctypes.uint32_t.toSource() );  // "ctypes.uint32_t"
    print( ctypes.uint32_t.ptr.toSource() );  // "ctypes.uint32_t.ptr"
    

    toString 関数 CType...

    型名を得る

    ctype.toString() : String

    返値
    type 型名 の形式で型名文字列を返します。
    print( ctypes.uint32_t.toString() );  // type uint32_t
    print( ctypes.uint32_t.ptr.toString() );  // type uint32_t*
    

    ctypes.Library クラス ...

    ダイナミックライブラリーからシンボルをexportします。

    Library : プロパティ・関数・・・リスト
    close 関数ライブラリーをクローズ
    declare 関数ライブラリーにある関数やデータをJavaScriptで使えるようにする

    close 関数 Library...

    ライブラリーをクローズ

    library.close()


    declare 関数 Library...

    ライブラリーにある関数やデータをJavaScriptで使えるようにする

    library.declare( name, abi[, returnType, argType1, ...] ) : ctypes.CData  ライブラリー関数
    library.declare( name, varType ) : ctypes.CData  ライブラリー変数

    引数
    name : String
    nativeライブラリーがexportしたシンボル名。
    abi : ABI定数 関数で必要な引数
    関数の呼び出し方。(ABI:=Aplication Binary Interface)
    ctypes.default_abi : Windows以外のライブラリーではほとんどの関数がこの呼び出し方
    ctypes.winapi_abi、ctypes.stdcall_abi : Windowsライブラリー内の関数はこの呼び出し方
    returnType : ctypes.CType 関数で必要な引数
    関数が返値のタイプ
    argType1... argTypeN : ctypes.CType 関数で必要な引数
    関数の引数タイプ
    最後に 文字列 '...' を渡せば、この関数は可変個の引数を受け付けてくれます。
    varType : ctypes.CType 変数で必要な引数
    変数のタイプ
    返値
    関数,変数のCDataオブジェクトを返します。
    nameシンボルが存在しない場合、エラーがthrowされます。
    var lib = ctypes.open("test");  // var lib = ctypes.open("test");
    
    var add = lib.declare("add",ctypes.default_abi,ctypes.double,ctypes.double,ctypes.double);
    var state = lib.declare("state",ctypes.int);
    
    print( add(2,4) );  // 6
    
    state.value = 123;
    print( state ); // ctypes.int(123)
    print( state.value ); // 123
    

    ctypes.Int64 クラス ...

    符号付き64ビット整数を扱うクラスです。

    Int64 : プロパティ・関数・・・リスト
    Int64 コンストラクター64ビット符号付き整数作成
    compare クラス関数大小比較
    hi クラス関数high 32-bit部分を取得
    lo クラス関数low 32-bit部分を取得
    join クラス関数high, low部分から64ビット符号付き整数作成
    toSource 関数64ビット符号付き整数オブジェクトを作成するJavaScriptコードを得る
    toString 関数文字列化

    Int64 コンストラクター Int64...

    64ビット符号付き整数作成

    new ctypes.Int64( value ) : ctypes.Int64
    ctypes.Int64( value ) : ctypes.Int64

    引数
    value : Integer, ctypes.Int64, String
    64-bit integerにする値。
    valueは整数あるいはctypes.Int64オブジェクトを与えます。
    また、10進数か先頭0xの16進数を文字列表現で与えることもできます。この場合、32-bit整数を超えるものは容易に表現可能となります。もちろん、-(minus)をオプションを付けれます。
    返値
    作成された64ビット符号付き整数オブジェクトを返します。
    例外
    TypeError
    引数valueがIntegerや文字列, 64-bit整数オブジェクトでない場合、throwされます。また、文字列のフォーマットが正しくなくて変換できない、あるいは できても 64-bit整数の範囲を超えると同じく throwされます。

    compare クラス関数Int64...

    大小比較

    ctypes.Int64.compare( a, b ) : Integer

    引数
    a, b : ctypes.Int64
    比較したい64-bit整数オブジェクト。
    返値
      a<b なら -1
      a==b なら 0
      a>b なら 1
    を返します。
        
    例外
    TypeError
    a, b 64-bit整数オブジェクトでない場合、throwされます。

    hi クラス関数Int64...

    high 32-bit部分を取得

    ctypes.Int64.hi( num ) : Integer

    引数
    num : ctypes.Int64
    64-bit整数オブジェクト。
    返値
    64-bit整数オブジェクト numの high 32-bit部分を返します。
    例外
    TypeError
    num が 64-bit整数オブジェクトでない場合、throwされます。

    lo クラス関数Int64...

    low 32-bit部分を取得

    ctypes.Int64.lo( num ) : Integer

    引数
    num : ctypes.Int64
    64-bit整数オブジェクト。
    返値
    64-bit整数オブジェクト numの low 32-bit部分を返します。
    例外
    TypeError
    num が 64-bit整数オブジェクトでない場合、throwされます。

    join クラス関数Int64...

    high, low部分から64ビット符号付き整数作成

    ctypes.Int64.join( high, low ) : ctypes.Int64

    引数
    high : Integer
    high 32-bit部分 整数。
    low : Integer
    low 32-bit部分 整数。
    返値
    high,low 32-bit部分で構成される64-bit整数オブジェクト
      (high << 32) + low
    を返します。
        
    例外
    TypeError
    high, low が Integerでない場合、throwされます。

    toSource 関数Int64...

    64ビット符号付き整数オブジェクトを作成するJavaScriptコードを得る

    int64.toSource() : String

    返値
    64ビット符号付き整数オブジェクトを作成するJavaScriptコード文字列を返します。

    toString 関数Int64...

    文字列化

    int64.toString( [radix] ) : String

    引数
    radix : Integer
    基数(radix進数)で文字列化します。省略した場合、10進数です。
    返値
    指定された基数で表現した文字列を返します。

    ctypes.UInt64 クラス ...

    符号なし64ビット整数を扱うクラスです。

    UInt64 : プロパティ・関数・・・リスト
    UInt64 コンストラクター64ビット符号なし整数作成
    compare クラス関数大小比較
    hi クラス関数high 32-bit部分を取得
    lo クラス関数low 32-bit部分を取得
    join クラス関数high, low部分から64ビット符号なし整数作成
    toSource 関数64ビット符号なし整数オブジェクトを作成するJavaScriptコードを得る
    toString 関数文字列化

    UInt64 コンストラクター UInt64...

    64ビット符号なし整数作成

    new ctypes.UInt64( value ) : ctypes.UInt64
    ctypes.UInt64( value ) : ctypes.UInt64

    引数
    value : Integer, ctypes.UInt64, String
    64-bit符号なし integerにする値。
    valueは整数あるいはctypes.UInt64オブジェクトを与えます。
    また、10進数か先頭0xの16進数を文字列表現で与えることもできます。この場合、32-bit整数を超えるものは容易に表現可能となります。
    返値
    作成された64ビット符号なし整数オブジェクトを返します。
    例外
    TypeError
    引数valueがIntegerや文字列, 64-bit符号なし整数オブジェクトでない場合、throwされます。また、文字列のフォーマットが正しくなくて変換できない、あるいは できても 64-bit符号なし整数の範囲を超えれと同じく throwされます。

    compare クラス関数UInt64...

    大小比較

    ctypes.UInt64.compare( a, b ) : Integer

    引数
    a, b : ctypes.UInt64
    比較したい64-bit符号なし整数オブジェクト。
    返値
      a<b なら -1
      a==b なら 0
      a>b なら 1
    を返します。
        
    例外
    TypeError
    a, b 64-bit符号なし整数オブジェクトでない場合、throwされます。

    hi クラス関数UInt64...

    high 32-bit部分を取得

    ctypes.UInt64.hi( num ) : Integer

    引数
    num : ctypes.UInt64
    64-bit符号なし整数オブジェクト。
    返値
    64-bit符号なし整数オブジェクト numの high 32-bit部分を返します。
    例外
    TypeError
    num が 64-bit符号なし整数オブジェクトでない場合、throwされます。

    lo クラス関数UInt64...

    low 32-bit部分を取得

    ctypes.UInt64.lo( num ) : Integer

    引数
    num : ctypes.UInt64
    64-bit符号なし整数オブジェクト。
    返値
    64-bit符号なし整数オブジェクト numの low 32-bit部分を返します。
    例外
    TypeError
    num が 64-bit符号なし整数オブジェクトでない場合、throwされます。

    join クラス関数UInt64...

    high, low部分から64ビット符号なし整数作成

    ctypes.UInt64.join( high, low ) : ctypes.UInt64

    引数
    high : Integer
    high 32-bit部分 整数。
    low : Integer
    low 32-bit部分 整数。
    返値
    high,low 32-bit部分で構成される64-bit符号なし整数オブジェクト
      (high << 32) + low
    を返します。
        
    例外
    TypeError
    high, low が Integerでない場合、throwされます。

    toSource 関数UInt64...

    64ビット符号なし整数オブジェクトを作成するJavaScriptコードを得る

    uint64.toSource() : String

    返値
    64ビット符号なし整数オブジェクトを作成するJavaScriptコード文字列を返します。

    toString 関数UInt64...

    文字列化

    uint64.toString( [radix] ) : String

    引数
    radix : Integer
    基数(radix進数)で文字列化します。省略した場合、10進数です。
    返値
    指定された基数で表現した文字列を返します。