1read 100read
2013年01月プログラム115: ECMAScript デス 4 (224) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Java低速GUI Swing & JavaFX 10 (579)
懐かしきベーマガの面白かった投稿プログラムを語る (774)
サウンドプログラミング5 (697)
日本語プログラミング言語『なでしこ』スレ5 (827)
スレ立てるまでもない質問はここで 123匹目 (638)
Git 5 (341)

ECMAScript デス 4


1 :2012/01/02 〜 最終レス :2013/01/13
《ECMAScriptを語るスレ》
1. - 概要 -
ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、
その他四方山話をするスレです。
Standard ECMA-262 ECMAScript Language Specification Edition 5.1 (June 2011) 標準規格(英語)
http://www.ecma-international.org/publications/standards/Ecma-262.htm
Annotated ECMAScript 5.1
http://es5.github.com/
Draft Specification for ES.next (Ecma-262 Edition 6)
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
Under Translation of ECMA-262 3rd Edition (日本語訳)
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/

■前スレ
ECMAScript デス 3
http://toro.2ch.net/test/read.cgi/tech/1190160481/
■過去スレ
JavaScript デス
http://pc5.2ch.net/test/read.cgi/tech/1052273054/
ECMAScript デス 2
http://pc11.2ch.net/test/read.cgi/tech/1088298991/

2 :
2. - JavaScriptについて -
JavaScriptは動的Webページ作成専用言語ではありません。
このスレでは、★言語★としてのECMAScript(JavaScript、JScript等)の話題を扱います。
ブラウザ環境でのJavaScriptはWeb製作板へ。ASP、CGIなどはWebProg板へ。
●スレ違い●なレスの例
 + JavaScriptによるWebページの挙動実現に関する疑問/質問、は、
   ■スレ違い■です。→Web製作板へどうぞ
 + Webブラウザの動作挙動に関するの疑問/質問         は、
   ■スレ違い■です。→Web製作板へどうぞ
 + そのほか、Webページ作成に限定した内容の疑問/質問    は、
   ■スレ違い■です。→Web製作板へどうぞ
■参考■[Web製作板] + JavaScript の質問用スレッド vol.94 +
http://toro.2ch.net/test/read.cgi/hp/1325400523/
※JavaScriptが板違いと言いたい人へ
運営サイドから次のような見解が出ています。
|459 飛べない削除屋 ★ sage :04/05/30 15:38 ID:???
|>‍>458
|ローカルルールにはひどく単純化されて書かれていますが、
|Javascript という言語そのものが板違いなのではありません。
|用途によって板違いかどうかを判断してください。

3 :
3. - 主な実装 -
Rhino (Mozilla.orgでメンテナンスされている組み込みを目的としたJava製の実装)
http://www.mozilla.org/rhino/
SpiderMonkey (同上。ただしこちらはCによる実装で、Mozilla Firefoxで採用されている)
https://developer.mozilla.org/en/SpiderMonkey
NJS (旧NGSを引き継いで開発されている独立したインタプリタ実装)
http://sourceforge.net/projects/njs/
JScript (Microsoft社による実装。WSHを介したローカルマシン用のバッチスクリプトとして使用に加え、.NETの開発言語のひとつでもある。
また、WebクライアントサイドスクリプトやASPにも利用することができる。)
http://msdn.microsoft.com/ja-jp/library/72bd815a.aspx
JScript .NET
http://msdn.microsoft.com/ja-jp/library/cc435359(v=vs.71).aspx
DMDScript (Digital Mars社による実装。Windows上で利用できるJScript置き換え的な位置づけ
スタンドアロンのインタプリタに加え、COMコンポーネントとして組み込むこともできる。)
http://www.digitalmars.com/dscript/
FESI (ECMAScript第一版に準拠したJava実装)
http://www.lugrin.ch/fesi/
DMonkey (Delphi(ObjectPascal)への組み込みを目的とした実装)
http://sourceforge.jp/projects/dmonkey/
Tamarin (Adobe から Mozilla.org に寄贈された JIT 付きの仮想マシン。
コンパイラは含まれないので、ECMAScript のソースを直接実行することはできない。)
https://wiki.mozilla.org/Tamarin

4 :
3の続き
KJS(KDEプロジェクトによって開発された実装)
http://api.kde.org/4.0-api/kdelibs-apidocs/kjs/html/index.html
JavaScriptCore(SafariのブラウザエンジンであるWebKitで採用されている実装で、KJSを元に改良されている)
http://trac.webkit.org/wiki/JavaScriptCore
Carakan(Opera Software ASAによって開発されOperaで採用されている実装)
http://my.opera.com/core/blog/2009/02/04/carakan
V8(GoogleによるC++実装で、Google ChromeやNode.jsなどで採用されている)
http://code.google.com/p/v8/
iv / lv5(日本人によって開発されているC++実装で、ES5.1準拠を謳う)
https://github.com/Constellation/iv/wiki/lv5

5 :
4. - 関連スレ -
Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
WebPrograming板などの専門スレをご利用ください。
[Web製作板] + JavaScript の質問用スレッド vol.94 +
http://toro.2ch.net/test/read.cgi/hp/1325400523/
[WebProg板] Ajaxでも語りませんか Rigel4
http://kohada.2ch.net/test/read.cgi/php/1166751613/
[プログラム板] JavaScriptスレ
http://toro.2ch.net/test/read.cgi/tech/1314333133/

6 :
ここまでテンプレ
リンク切れの修正や実装の補足などをした

7 :
>>1
おつ

8 :
>>989
JSON2.jsでは普通に使われてる書き方だけどな。
まぁ一般的な書き方は(functionの方ではあるけどな。
>>996-998
今回書かれているbに対して、それらの書き方は構文的にもエラー。
しかしb = と代入式が書かれてる時点で括弧なしは構文エラーではなくなる。
つまり単独での実行を例にするのは間違ってる。

9 :
なんで右にもtestを付けるんですか?
var test = function test() {};

10 :
name で名前が取り出せるようになるから。

11 :
あ、それだけなんですか。デバッグの時に多少マシになる感じなんですね。

12 :
>>8
言語仕様を読んだこと無い奴がカドクセーとかほざいてるだけだから気にするな。

13 :
そういう流れいらないから

14 :
カッコを付ける習慣がある以上、納得できる理由を出さないと。ただの遠吠えになってるよ。

15 :
お前の習慣なんてしらねーよw

16 :
>>前スレ997
ご指摘通り、記憶違いのようでした。お騒がせしました。
>>8
なるほど…。確かに代入演算子で右辺が式であることを保証している為、式文の規定にはとらわれないですね。納得です。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.13
>>9
名前付き関数式は関数内のスコープに影響するので変数名を変更しても自身を参照できるようになります。

17 :

い-635
ちなみに、平成18年度の民主党の収支報告書だが、
 電通が  690,150,988円(約6億9千万円)
 博報堂が 19,425,964円 (約2千万円)
 読売グループ系列(読売広告、読売メディアセンター)が 72,058,917円(約7千万円)なw
 フライシュマンヒラードジャパンが、1974000円かw
フライシュマンの本社はアメリカにあって、アメリカ政界や企業のPRも担当してるユダヤ系の会社だなw
ここが「マニュフェスト」っていう横文字を考えたんだなw
そういえば、今東電と電力総連がフライシュマンを雇ってるらしいじゃないww
札束で学者ひっぱたいてテレビででたらめ言わせても年寄なんかはまだまだテレビのいうことを信じるからなw

18 :
>>16
> 変数名を変更しても
「変数が別のものに束縛されても」と言いたいのかな?

19 :
ECMAScriptの規格に「束縛」なんて用語出てこないけど、何と勘違いしちゃってるの?

20 :
>>18
「束縛」はわかりませんが、http://jsfiddle.net/4ULa3/1/ の「名前付き関数式を利用するパターン」がそれです。
IE8- ではバグがあるので使えませんけどね…。
http://d.hatena.ne.jp/think49/20110521/1305959222
後学の為に「束縛」を説明(もしくは参考URLの掲示)していただけると嬉しいです。
ぐぐって何となくは理解しましたが、「変数への代入 === 束縛」なのでしょうか。
この前提が正しいと仮定して、束縛することよりも元々の変数の名前で参照できなくなることが鍵のような気がします。

21 :
ES5になってdefineProperty()とか出来て変わったようですが
下記のコードをES5らしく書くなら、どう書いたらいいでしょうか?
var O = function (a) {
this.o = a;
};
O.prototype = {
get oooo() {
return this.o;
}
};
var o = new O('oooo!');
o.oooo;

22 :
>>8
>JSON2.jsでは普通に使われてる書き方だけどな。
hoge = function(){}();
こういうのの話だよね?
無いぞ。どこだよ。

23 :
>>21
var O = Object.create(null, {
 o: { value: "" },
 oooo: { get: function() { return this.o; } }
});
var o = Object.create(O, {
 o: { value: "oooo!"}
});

24 :
ttp://d.hatena.ne.jp/oogatta/20111204/1322982897
ES.nextもstrawmanもキモくね?

25 :
Traitだけありゃいいのに最適化がうんたら

26 :
>>24
実行コンテキストがいちいち変わるのが理解出来ないからクラスベースの
構文糖用意したつもりなんだよ。妥協点がそこだったんだろ。
ところで関数が暗黙にthisプロパティを持たなくなったのは良かったが
Function.prototype.bind(cx,args...)で引数のLIST型書きかえれるようにしたのはやめて欲しかった。
Callオブジェクトを撲滅できない以上ここら辺は積極的に隠蔽すべきだと思うんだが。
__proto__プロパティがダメでObject.define*がいい理由も根拠がわからん。

27 :
__proto__がいいと思う理由は何?

28 :
function Foo() {};
function Bar() {};
var f1 = new Foo();
f1.constructor === Foo.prototype.constructor; // Foo
Foo.prototype = new Bar();
var f2 = new Foo();
f2.constructor === Object.getPrototypeOf(Foo.prototype).constructor; // Bar
f1.constructor !== f2.constructor; // Foo !== Bar
Foo.prototypeの参照先が変わったのに、
なぜf1.constructorはFooを指しているんでしょうか。

29 :
newはprototypeのコピーであって参照じゃないっしょ

30 :
>>29
言われて本読みなおしてググってやっと理解できました。
ありがとうございます。

31 :
ECMAScript Language Specification ECMA-262 6th Edition - DRAFT
http://people.mozilla.org/~jorendorff/es6-draft.html
読みやすくてイイ!

32 :
JavaScriptではperlの
( $foo, $bar ) = split( /,/ );
みたいな書き方は出来ない?
(リストの左辺値)

33 :
>>32
すんません。ECMAScriptでした。

34 :
実装による
以上

35 :
>>34
仕様の話に実装で答えても…

36 :
ES5.1までの仕様にはないかな
6以降で入れるみたいな話しがちらほら
Fxはたしか実装してた気がする

37 :
FirefoxはJavaScript1.7で導入してて
https://developer.mozilla.org/ja/New_in_JavaScript_1.7
分割代入 (destructuring assignment) って名前がついてる

38 :
CoffeeScript使え

39 :
32です。ありがとうございました。
ってことは、配列の内容を個々に変数にバラすには
1個ずつ代入するしか方法がない、ってことでしょうかね。

40 :
だからFFでできるしCS使う手もあるっていってるじゃん

41 :
isnt演算子のセンスのなさ
isnt = is not = is!
でよかったじゃん

42 :
それは分かりづらいから無い

43 :
Dだと!is

44 :
>>40
ES3縛りっつー前提だもんで。
結局こんなん書きました。1個ずつ代入してることには変りはないですが。
ary2lc( [ 'yy', 'mm', 'dd' ], "2012/03/28".split("/") );
function ary2lc( to, from ) {
for( var i=0; i<to.length; i++ ) {
eval( to[i] + " = " + from[i] );
}
}

45 :
CoffeeScriptはES3デスよ……

46 :
>>45
すんません。よく知りませんでした。
勉強します。

47 :
ところでes6のletとconstはふざけてんのアレ?

48 :
letはいろんな書き方できるから?
何がどうふざけてるか書いてくれないかな

49 :
そういう感性は俺にはなかった。
letもconstもプログラム言語にはあって然るべき機能だと思うけど。

50 :
>>48,49
jsのブロックは見た目はブロックスコープに見えるけど言語仕様上ブロックスコープはないからブロックのセマンティックスはただの複文。
複文は複数の文を一つの文とみなすことしかやってない。var定義はプロトタイプベース言語としてのメタな文脈においてmozillaはvarバインドと呼んでるんだけど
varバインドは関数スコープで変数を束縛する。このときjsではスタックフレームもオブジェクトなのでプロトタイプベースから見ればスロット集合の実体を持ってて
ローカル変数はスタックフレームオブジェクトのスロットに束縛する。このときtry-catchの変数だけは実装上varとは別のスロット集合に束縛してスコープが別になってる。
それを仕様に取り込んだのがletでvarバインドに対してletバインドと呼んだりする。let文はその文で定義された変数はその文中のみ有効というwith文の置き換え。
let式のexpの部分は暗黙のブロックに囲まれるのでlet文の構文糖。ブロック中のlet定義は複文によって一つとみなされるので複文中の文から
letは見えるけど複文の実行が終われば他のコードからは見えなくなって結果letバインドされた変数はGCされる。
あくまでブロックスコープなんてものはなくてイメージとしてはカンマ結合(let a,=1,b=2;)みたいなもんだと思えばいい。
最新のドラフトを追ってないんで変更があるかもしれないけどes6のlet,constはdeclarationといってletバインディングされる。
es6はjsの仕様に合わせずブロックスコープを仕様にしたせいでletがブロック直下にしか置けなくなった。
letはwithの抹殺以外に旧時代のスコープを新たに作るために無名関数を使うコードを完全に置き換える目的もあったのにes6の仕様だと
let文とlet式が使えなくなってそれが直接的にできなくなった。他にもif直下にlet置けないからどんなに単独のifが短くて一行で書き
たくてもブロックで囲むコーディングルールを言語仕様が強制してしまったり、letはブロック直下以外禁止なのでforの初期化子に
置けないから本末転倒になってる。これを回避するにはforをブロックで囲んでその直下にlet定義するしかない。es5のfor-initializerが
消えたのはこれに無理やり合わせるため。
ほかにもconstがletバインドだから関数スコープじゃなくなって関数の頭で条件に応じて初期化内容を変えるのに

51 :
function f(){
if(cond) const x=1;
print(x);//!condならundefined
}
function f2(){
if(cond){
const c=//hogehoge
}else{
const c=//fugafuga
}
//色々長い処理
print(c);//!condならfugafuga
}
がif(cond){ const x=1; print(x) }else{ const x=undefined; print(x) }かconst x cond ? 1 : undefined;と
function f2(){
if(cond){
const c=//hogehoge
//色々長い処理
print(c);
}else{
const c=//fugafuga
//色々長い処理
print(c);
}
になる。ほかにもconstは最適化のために初期化子必須になったんだけどこれは元々ある変数の初期化を伴わない定義の
デフォルトはundefined valueという仕様にesでlet文法作るときのミスで合わせられなくなったせいで未初期化の
constはundefined valueに束縛されずに2度目の代入が出来てしまうため、建前は最適化のためと言ってるけど初期化子必須に
したせいでconstの値がundefined valueになるときconst c = undefinedかconst c = void(0)としなきゃいけなくなったから
cに入る値が実行時まで遅延されて逆に最適化が難しくなってる。globalのプロパティundefinedはundefined valueじゃなくて
プロパティだから[[get]]するまで値が確定しないのとvoid(0)も[[call]]しないと確定しないのが原因。
jsの元からある仕様だとconstは初期化いらないから、しない場合はundefined valueに束縛されて定義時に値が確定して最適化出来る。

52 :
これは最適化云々より変数の値がundefined valueになることを明確に主張するコードとしてわざとこう書くもんだった。
あとfunctionDeclarationがletバインドになったから既存の実装と全く互換性がなく関数定義をifブロックで囲むと外から見えなくなる。
#ifdefしたい時はif-elseでコード全体を囲む必要がある。#ifdefした関数使うコードがifとelseで2パスあるわけ。
es6のブロックスコープは本来はブロックスコープじゃないものをブロックスコープとして仕様にしたからコンテキスト依存になって制限のほうが多くなってるんだよ。
ecma-262は乱立する実装の最小公倍数の共通化とマシンリソースやセキュリティの都合があるから、極力実装に首突っ込まないよう
配慮されてたのに3.1派が主流になってから既存の実装と互換性がないのと最適化ばかり考えて実装の都合に制限された仕様になってるのがふざけてるって話。
nextやharmonyのbrendan eichの提案見てるとnetscape草案のjs2.0にあったのばかりだしMapやWeakMapだって3.1派が昔拒否したライブラリだし元に戻そうとしてるのは分かるよ。
仕様と実装の説明すると長いな。まあ、そういうこと。

53 :
ガチで長いぞw

54 :
>>50
長過ぎるのと意味が分からんところがあるけど
> このときtry-catchの変数だけは実装上varとは別のスロット集合に束縛してスコープが別になってる。
とりあえず、↑これはcatch内だけだね。
> letはブロック直下以外禁止なのでforの初期化子に
> 置けないから本末転倒になってる。これを回避するにはforをブロックで囲んでその直下にlet定義するしかない。
んなこたーない。仕様的にもちゃんと置けるよ。
他は後でつっこむ

55 :
>>50-52"をまとめると
ブロックはスコープじゃなくて唯の複文
letはスコープ作るために導入された
letはundefined valueで初期化されない
letでundefined valueで初期化されるよえに=undefined、=void(0)などと書くと最適化されにくくなる弊害がある
ってこと?

56 :
let文、let式がなければ
var foo = 0;
{ let foo = foo; alert(foo); }
とかではまるやつが出てくるのは目に見えてるしな

57 :
letは色んな事出来すぎるからだめなんだよなぁ
何であんなに色んな記法を作ったのか

58 :
>>51
> ほかにもconstは最適化のために初期化子必須になったんだけどこれは元々ある変数の初期化を伴わない定義の
constやletを初期化せずに宣言するのはバグの元だろ。どの言語でも言える事だけどローカル変数は
宣言と同時に絶対初期化するべき。
> 未初期化のconst
constは初期化必須って言っているのに、未初期化って矛盾してるぞ。その時はどんな値になってるんだ?
単純に未初期化のconstは、その時点で実行時エラーになる気がするが。

59 :
constもletもJavaScriptの構造を理解している人に取っては必要ないものだよ
他言語メインの人がなんとなく使うときにハマるからあった方がいいねってもの

60 :
const hoge;
hoge = "後から代入できちゃう";
ってことなんじゃねーの?
undefinedな定数にしたくて初期値省略してるのに、代入されたら台無しだよっていう

61 :
constな変数(定数)をundefinedにする意味は全くないと思うけど、単純に未定義
って事もあるから、どっちでもいいか。
constな変数は絶対に初期化しとけって事だな。

62 :
>>60
これってできるの?
うちのchromeさんだと出来ないんだけど
正確には代入してもconstされた値は上書きできないがエラーも出ない
#エラー出ないのはちょっとなー
const hoge = "aaaa";
hoge = "bbb"; // ここでbbbはが返る
alert(hoge); // ここで表示されるのはaaaa
const moge;
moge = "ccc"; // ここではcccが返る
alert(moge); // ここではundefinedが返る
正直な話言語仕様的には3.1で十分で
5,6なんかはは楽にするために拡張されると解釈してる

63 :
JavaScriptって、一見代入とかができたように見えて、実はできない、という
場合ってスルーしちゃうじゃない。昔から。
foo = "foo"
foo.bar = "baz"
alert(foo.bar) // undefined

64 :
何のためのstrict modeなんですかねえ

65 :
たとえばJavaだと、参照される前に確実に1回だけ初期化される変数は、
finalだけど初期値なし、にできるけどな。
要するにundefinedってのは、名前が未定義って意味じゃなくて、初期化されてない値
(unititializeとすべき?)って意味だから、「undefinedな定数」なんて無理だから、って
ことじゃね?

66 :
>>63
これは foo.bar にアクセスした時点で新たに String オブジェクトが生成されて
そっちの bar プロパティに代入してるだけだから、
代入が失敗しているわけではないと思う

67 :
>>66
イミフ

68 :
fxでも失敗するね
const hoge;
hoge = "aaaa"; // aaaa
hoge; // undefined

69 :
>>67
仕様書を読んでみるといい

70 :
6ドラフトの12.2.1 Let and Const Declarations
読んだけどわからん
そんなこと書いてあるかな?

71 :
すごくおおざっぱに説明すると、プリミティブに対してオブジェクトとして
アクセスしようとすると、オブジェクトが作られて、それに対してアクセスする、
というのが言語仕様。
だから、その作られたオブジェクトの属性として設定されるけど、そのオブジェクトに
アクセスする方法がないし、元の変数は元のプリミティブを指したままなので……
というのが >>63 で起きてること。

72 :
ゴミな仕様だな

73 :
普通に例外吐いて止まってくれるだけでだいぶ助かるんだが

74 :
strict mode + Object.sealed でおk

75 :
foo.bar()
みたいな明らかに一文が終了してるときもセミコロンいるやん。
if(foo)
a+b;
みたいなコード書くヤツのほうを撲滅しろよ。

76 :
波括弧を必須にするだけでよかったのにな

77 :
;の省略とかややこしくなるだけだからいらんわ

78 :
セミコロン省略はそこまで混乱しないだろ

79 :
多分シェルでも全ての行末にセミコロンを付けるような人なんだろう

80 :
セミコロン省略はあっていい
自分も付けるか気分と見やすさと必須性で決める
基本は全く無駄な物だから付けない

81 :
必要ないならなくなってるよ。必要だから残ってる。
httpを使うことを考えると無くせない。

82 :
俺は実際全くセミコロン付けないで書けている。よって必要ない。
改行せず一行に詰め込む時にだけ必要、という主張だね。

83 :
そんなことは言ってない
必要ないところで省略した方が逆に見栄えもよく感じられて
問題もないこともあるから省略できていいって言ってる
セミコロンは必要、だけど省略も必要
わかる?

84 :
省略したほうがいい場面ってどこだよ
array.filter(function(v) { return v % 2 == 0 });
みたいに関数本体が一文で済むところなら
セミコロンなしでもいいかなという気はするけど、
それ以外になんかあるか?

85 :
一律つけた方が法則がシンプルな分
見栄えもいいよ
セミコロンの場合実害が少ないからなくても困らないけど

86 :
メモ帳で長いコード書くとき
カッチリしたもう変更がないだろう機械的なコードはセミコロンで固めて
個性的な変更しまくりのふわふわしたコードには付けないな

87 :
>>84
いや、むしろそういうごちゃごちゃした1行には付けるべきだろ。
a=1
b=2+a
みたいなのには必要ない、もしくは、
a=1;b=2+a;
にする。

88 :
>>86
こーいう、背後に哲学が感じられる使い分けが
コードから読み取れれば問題ない
無分別に一貫性なくつけたりつけなかったり
は醜いし読みにくい。
考えなさっぽさが滲みでてみっともないし。

89 :
スマホで作ってるとセミコロン付ける付けないとインデントはかなり悩む
それはそうとMathやStringが拡張される話で今盛り上がってるのは個人的にもありがたいんだけど
数の進数やbit数に関しての拡張と現在milli秒で扱ってる範囲ををmicro秒にして欲しいんだけど
そういう話は挙がってないの?

90 :
なんでもかんでもマイクロ秒管理したら
既存APIが遅くなるんでねーの?

91 :
OSから取得するナノ秒までで約60bit
マイクロ秒までで約50bit
ミリ秒までで約40bit
全部64bit整数使ってるだろうから変わりないのでは?

92 :
非力な組み込みでもecmascript使うんだから標準で仕様化したらだめだ。

93 :
非力というか万が一タイマーがサポートしてないのなら0埋めで返せばいいだけじゃない?
スクロールとか描画なんかの演算とタイマー設定をもう少し正確にやりたいだけでしょ?
まあディスプレイ付きのデバイスなら今時間違いなくマイクロ秒まではサポートしてるタイマー使ってるはずだけど

94 :
セミコロン問題は、一応プラグマのopen issueのままです。
http://wiki.ecmascript.org/doku.php?id=harmony:pragmas

95 :
>>93
だから、ECMAScriptなんつー総本山規格じゃなくて、ディスプレイ付デバイスで動かすような実装のレベルで
何とかしてよってのが>>92なんじゃねーの。

96 :
マイクロ秒単位のタイマは、むしろ非力な組み込みでの需要の方が大きいんじゃねーの
なんにせよ非リアルタイムな環境でのマイクロ秒タイマは
信用ならない精度になるだろ
そういう話をするとしたらQueryPerformanceCounter的な高精度カウンタを新設して
自前でポーリングしれって感じになるんじゃねえかな

97 :
コンストラクタを呼び出すとき
applyを使って引数を配列で指定したいときがあるんだけど可能かな?
例えばコンストラクタが
var C = (function(){
  var c = 0;
  return function (a,b) {
    this.a = a;
    this.b = b;
    alert([a,b,++c]);
  };
})();
として、とりあえず以下はダメだった。
var o = new C.apply(null, args);
var o = new (C.apply(null, args));
var o = (new C).apply(null, args);
エラー
var o = C.apply(new C, args);
コンスタラクタが二回呼ばれる
oが返されない
var o = new C();
C.apply(o, args);
コンスタラクタが二回呼ばれる
var o = {};
C.apply(o, args);
oがCのインスタンスにならない
アイデアあったらヨロ

98 :
>>97
Function#bind を活用してみてください。

99 :
>>98
それじゃ無理だろ。
そもそもbindさせるオブジェクトを
これから作ろうって話な訳だし。
evalして無理やりパースするくらいじゃね?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【分散型バージョン管理】 Mercurial 2【hg】 (215)
D言語 Part30 (915)
【マック】Macintoshプログラミング質問箱 (544)
ARToolKitでARを作ろう (253)
スレ立てるまでもない質問はここで 123匹目 (638)
【3DS】プチコンを語るスレ【DSi】 (676)
--log9.info------------------
  五 七 五  最後は必ず もうだめぽ (247)
■本気でプロを目指してる人に (601)
【5-9、ジャパン総合スレ】 (576)
島根のビリヤード事情 (627)
大分で玉撞いている人(・o・) (966)
【メガネ?】視力の悩みを語ろう【コンタクト?】 (377)
【エフレン】フィリピン人を語る【フランシスコ】 (819)
【慎重派】遅撞きプレイヤー集まれ!【理論派】 (486)
新潟ビリヤード不満の穴 (366)
【314】プレデター専用スレッド【 Z 】 (649)
@大阪のビリヤード事情N (928)
北海道のビリヤード事情 5 (294)
【喫煙は当然の権利?】ビリヤードのタバコ事情 (897)
【万年Bが】千葉県のビリヤード事情3【住人です】 (591)
福岡の玉事情 (949)
【不正エントリー】いいのか?【業界追放?】 (624)
--log55.com------------------
【FEH】ファイアーエムブレムヒーローズpart5569
【アズレン】アズールレーン Part4862
【デレステ】スターライトステージ★11689
【プロスピ】プロ野球スピリッツA part921
【アリスギア】アリス・ギア・アイギス Part1285
【ミリシタ】アイドルマスターミリオンライブ! シアターデイズ Part2977
【FEH】ファイアーエムブレムヒーローズpart5570
【ガルパ】BanG Dream! ガールズバンドパーティ!★2383【バンドリ】