ECMAScript デス 3
..
116:111
08/01/22 18:47:11
親切な方、もう一つ教えてください。
Q4)ECMAScriptを覚えたら、どのWindowsPCでも、計算とか簡単なプログラム作って走らせたりできますか?
何か別にコンパイラとかインタプリタとか入れなくても、ネットカフェとか友人のPCとかでも、Windows標準状態でできますか?
117:デフォルトの名無しさん
08/01/22 19:19:10
>>116
とりあえずWSHやHTAなら大抵のWindowsPCで動くんじゃないか?
118:デフォルトの名無しさん
08/01/22 19:21:09
JScriptとJavaScriptでは変数のスコープの扱いがすこし違うくらいか
119:111
08/01/22 20:08:38
ありがトン
120:デフォルトの名無しさん
08/02/07 04:24:44
web上の文献を読んでいたら、global スコープでの var 宣言がほとんど無意味なように感じたんですが、
global スコープでは var をつけて変数を宣言するのは無意味ですか?
121:デフォルトの名無しさん
08/02/07 04:47:41
処理系にとっては無意味でも人間にとっては意味あるでしょう。
122:デフォルトの名無しさん
08/02/07 12:30:18
var付けないとコンテキストチェーンたどって変数探す処理が含まれるから挙動は違うと思うんだが。
123:デフォルトの名無しさん
08/02/12 09:27:08
win = window.open(...);
win.scrollBy(0,100);
みたいにサブウィンドウを作って、それを親から操作することは出来ないんでしょうか?
124:デフォルトの名無しさん
08/02/12 13:48:58
板違い
125:デフォルトの名無しさん
08/02/15 10:07:18
文字列リテラルで、Unicodeのコードポイントを
"\uXXXX"で指示できるけど、これはBMP内まで?
126:デフォルトの名無しさん
08/02/15 11:52:16
>>125
うん。16bit まで。
URLリンク(www2u.biglobe.ne.jp)
URLリンク(liosk.blog103.fc2.com) の [追記]
将来(ES4)に関してはこの辺
URLリンク(wiki.ecmascript.org)
URLリンク(bugzilla.mozilla.org)
127:デフォルトの名無しさん
08/02/15 17:23:45
>>126
サンクス。
手元の処理系だと、サロゲートペアで処理されてた。
128:デフォルトの名無しさん
08/02/16 23:01:51
"abc123def".search(/[0-9](?=[^0-9])/); // = 5
"abc123def".search(/(?=[^0-9])[0-9]/); // = -1
前者は期待通りですが、後者がマッチしない理由がわかりません。
3 を期待したんですけど。
129:128
08/02/16 23:13:41
URLリンク(www.kt.rim.or.jp)
むー、(?=〜)は前置できないのか。
130:デフォルトの名無しさん
08/02/24 18:05:38
prototype.js
ってどのへんが便利なの?
131:デフォルトの名無しさん
08/02/24 18:11:13
ES4がなくてもクラスを使える。
132:デフォルトの名無しさん
08/02/26 08:00:08
見た目クラスなだけだろ
133:デフォルトの名無しさん
08/02/26 10:46:22
lispのマクロに相当することってできるの?
134:デフォルトの名無しさん
08/02/26 14:56:25
lips マクロでググッたらキャノンのページ記述言語が出てきたんだが
lipsってあのlipsだよな?マクロなんてあったのか。
135:デフォルトの名無しさん
08/02/26 15:12:32
Nice joke!
136:sage
08/02/26 20:54:00
ものすごい記述方法を発見した!!
Date.call.call("".replace, " TRIM ", /^\s+|\s+$/g, "")
これなにしてるかわかるか!
使おうとは思わないけどすごいね
この記述はもう知られてるの?
137:デフォルトの名無しさん
08/02/26 21:20:07
callってes4でなくなるんじゃなかった?
138:デフォルトの名無しさん
08/02/26 22:01:39
なくなるどころか汎用メソッド化されるぜ
>>136は
Function.call(String.prototype.replace, " TRIM ", /^\s+|\s+$/g, "")
String.replace(" TRIM ", /^\s+|\s+$/g, "")
などと書けるように
後者はすでにJavaScript 1.6で可能になってるけどね
139:デフォルトの名無しさん
08/02/27 14:23:21
どうすごいの?単なるトリムなんだけど。
140:デフォルトの名無しさん
08/02/27 16:41:48
任意のコンテキストで関数呼んでる。
invokeみたいなもん。
141:デフォルトの名無しさん
08/02/27 19:40:33
[].slice.call(arguments)とかarray.push.apply(array, arguments)とかならたまに見るな。
142:sage
08/02/28 00:58:02
ちょい脱線するけど
[].slice.call(arguments) より Array.apply(arguments) のほうが好き
143:sage
08/02/28 01:00:17
ミスった無駄にスレ消費して恐縮です。
Array.apply(null, arguments) と言いたかった
144:デフォルトの名無しさん
08/02/28 05:58:24
引数の数が1つでその値が数値である、ということが
絶対ないと保障されているならそれでもいいね。
だがその前にsageを覚えろ。
145:デフォルトの名無しさん
08/02/28 06:17:55
別に下げんでもいいよ
荒らしや厨が入ってくるわけでもないし
146:デフォルトの名無しさん
08/02/28 22:28:12
あらしです
147:デフォルトの名無しさん
08/02/29 01:56:46
ムーンサルトり乙
148:デフォルトの名無しさん
08/03/08 13:05:10
>>136
知られてるというか、そういうトリックを理解してないと今時のJSコード読めないお。
↓こんな遊びとか
URLリンク(d.hatena.ne.jp)
149:デフォルトの名無しさん
08/03/08 13:07:26
gotoスパゲッティや継続スパゲッティと一緒で理解する必要はないかと。
単なる遊びだから。
150:デフォルトの名無しさん
08/03/08 13:08:56
まあcall.callは有用に使われてるの見た事ないね
151:デフォルトの名無しさん
08/03/08 13:40:31
callee.callerの方が使える。
152:デフォルトの名無しさん
08/03/08 15:19:40
callを覚えたてのやつが誰もがやる遊びだが実用性は皆無
153:デフォルトの名無しさん
08/03/08 18:14:28
再帰で、関数名が変わってもいい様に
arguments.callee.call()にした事はある。
154:デフォルトの名無しさん
08/03/08 18:50:18
バッド・ノウハウの塊だなw
155:デフォルトの名無しさん
08/03/08 19:36:46
俺の知ってるバッドノウハウ
var o = {valueOf:function(){return 0;}};
++o
156:デフォルトの名無しさん
08/03/08 20:32:07
それはバッドノウハウではなく「遊び」のような気が。
157:デフォルトの名無しさん
08/03/08 21:09:24
もうちょっといじればジェネレータだ
158:デフォルトの名無しさん
08/03/09 00:53:48
JavaScriptで、JavaScript処理系は作れるのかな。
159:デフォルトの名無しさん
08/03/09 01:06:10
あるよ。ググッてみて。
160:デフォルトの名無しさん
08/03/09 05:02:10
あるんだ。
柔軟な言語だしな。
161:デフォルトの名無しさん
08/03/09 07:03:00
tamarinが自己完結コンパイラじゃなかったっけ?
162:デフォルトの名無しさん
08/03/09 11:24:14
>>153
そゆときは本体関数の内側にクロージャを書くかな。
初期化や終了処理も追加しやすい。
163:デフォルトの名無しさん
08/03/09 11:36:30
>>161
あれはプロトタイプであってAdobeが使っていたものとは違うけどね。
けどかなり大きな本格的な実装。
> A partial implementation of a prototype compiler written in
> ActionScript, which will be developed by the open source community to
> implement all of the ECMAScript 4th edition specification. This will
> be a "self-hosted" compiler that is written in the language it compiles.
URLリンク(www.mozilla.org)
164:デフォルトの名無しさん
08/03/09 11:41:50
つ URLリンク(hg.mozilla.org)
165:デフォルトの名無しさん
08/03/09 13:29:38
むしろこっち
URLリンク(mxr-test.landfill.bugzilla.org)
This directory contains code for an ES4 compiler for tamarin
written in ES4.
166:デフォルトの名無しさん
08/03/13 00:00:18
ecma-262やjavascriptでカリー化ってどうやろう?
数学的に考えてカリー化できればラムダ式使って関数宣言なしに全コード書けると思うんだけど。
167:デフォルトの名無しさん
08/03/13 01:49:57
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
URLリンク(nanto.asablo.jp)
URLリンク(blog.livedoor.jp)
この辺で<カリー化
実用上は部分適用で十分な気がするけども。
168:デフォルトの名無しさん
08/03/14 14:34:06
>>167
便利だね
pythonが便利なモジュール沢山あるからそっち行ってしまったけど
c++に慣れている人にはこっちの方が書きやすい
169:デフォルトの名無しさん
08/03/15 11:30:47
カリー化とラムダ式オンリーだと書いてて楽しいじゃないか。
ブックマークレットでも使えるし。
Rhinoのes4実装まだ〜?
170:デフォルトの名無しさん
08/03/15 12:15:36
es4はプロトタイプ言語の特徴を無視してる感じで嫌いなのは俺だけ?
171:デフォルトの名無しさん
08/03/15 13:31:22
俺は好き。
172:デフォルトの名無しさん
08/03/15 14:56:57
>>170
俺も3の方が好きだ。
同じ言語だと思うから嫌いとか思うわけで
もう完全な別言語だと思うといいと思うよ…
173:デフォルトの名無しさん
08/03/15 15:12:23
ECAMScript4はpackageが入ったから、
CPANみたいなのができて大爆発だと思う。
perl6はもちろんruby, pythonも食っちゃうかも。
174:デフォルトの名無しさん
08/03/15 17:22:20
それはないな。
俺もes4より3の方が好き。
es4はプロトタイプである必要性がない。
演算子オーバーロードも要らない。可読性が落ちる。
ライブラリがでかすぎるのも実装するとき問題になると思う。
仕様が巨大すぎてwebでの要求以上のものをやっちまった感があるんだよなぁ。
学習面でも大変だし。
これがデスクトップアプリケーション作るための言語ならこれくらいの仕様で良いんだが・・・。
175:デフォルトの名無しさん
08/03/15 17:50:37
逆に必要ないのはes3にしがみついているプログラマになってきちゃった…
176:デフォルトの名無しさん
08/03/15 21:09:40
HTML5と絡んでWebアプリケーションを作るための言語にしたいんじゃないの。
177:デフォルトの名無しさん
08/03/15 23:13:42
ES3のプロトタイプ指向のシンプルな美しさがES4には無いね。
178:デフォルトの名無しさん
08/03/16 01:12:53
>>117
だからといって、
URLリンク(javascript.crockford.com)
URLリンク(wiki.ecmascript.org)
これもあんまり。部分的にはいいとこもあるけど、なんかいいかげんで。
179:デフォルトの名無しさん
08/03/16 08:15:31
クラス使いたければJavaのアプレットでも作ってろっての。
JS/ESは言語仕様の無軌道な拡張よりも処理系の実装の改善をしていってほしい。
言語仕様をいじるのは、せめてpythonと比較になるぐらいの速度が出てから。
180:デフォルトの名無しさん
08/03/16 09:24:06
つ>>164
181:デフォルトの名無しさん
08/03/16 10:33:36
>プログラミング言語について語るときに仕様と実装という区別のついてない人が多すぎる。
URLリンク(cl-www.msi.co.jp)
182:179
08/03/16 11:13:41
>>181
実際問題として仕様と実装の区別を間違えているのがes4のstatic typingを始めとする
パフォーマンス向上のための言語仕様拡張でしょ。
それよりも、パフォーマンス向上は実装の問題として扱って、
せめて他のdynamic typingな言語の処理系のパフォーマンス程度にマトモな処理系を
実装/普及させるのが先だろ、というのが>>179の主旨。わかりにくてスマソ。
183:デフォルトの名無しさん
08/03/16 12:35:33
static typingにはsafe programmingというのもあるわけで…
184:デフォルトの名無しさん
08/03/16 13:12:36
消火器を売りつけるようなもんか
185:デフォルトの名無しさん
08/03/16 13:41:02
>>183
ところがJS/ESにstatic typingを導入しようとしている人達は、
static typingをAPIに適用してパフォーマンスを稼いで
ユーザスクリプト側ではdynamic typingのままでいいと言っている。
safe programmingのためならば、ユーザスクリプト側にこそ
static typingが必要だと思うのだがね。
186:デフォルトの名無しさん
08/03/16 13:58:14
動的型言語はコンパイラによるチェックではなくテストケースによる
安全性のチェックを行うという事になっている。そこにコンパイラに
よるチェックを入れた方がより簡単に安全性を増せるよと主張するのは
野暮天。
187:デフォルトの名無しさん
08/03/16 15:45:57
多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
ならんのだから、はじめから型情報入れられるようにした方が楽でないか?
188:デフォルトの名無しさん
08/03/16 18:13:58
>>187
> 多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
> ならんのだから、
え?あるコードで想定している「型」と具体的なクラスは全然別物なのが
dynamic typingのいいところでしょ…
189:デフォルトの名無しさん
08/03/16 18:38:50
そういう意見は全て退けられてes4が出来ましたw
190:デフォルトの名無しさん
08/03/16 18:44:10
そりゃそうだけど、あるコードで想定している「型」が明示されてるなら
具体的なクラスの方は楽できるし。
URLリンク(www.ecmascript.org)
191:デフォルトの名無しさん
08/03/16 18:55:44
es4は言語思想がes3までと違いすぎて同じ言語として扱う意味がない。
192:デフォルトの名無しさん
08/03/16 19:11:08
ちょうど今パート3だしes4のスレは分岐するか?
193:デフォルトの名無しさん
08/03/16 21:02:38
その前に1000行ったらな
194:デフォルトの名無しさん
08/03/16 21:21:24
>>191
禿同。
195:デフォルトの名無しさん
08/03/16 21:48:11
実は言語思想などはじめから無かったw
196:デフォルトの名無しさん
08/03/16 22:37:08
最初はNetscapeの看板機能になるためだけの言語だったからな。
197:デフォルトの名無しさん
08/03/16 22:52:07
Live Object という名前の時は輝いていた
198:デフォルトの名無しさん
08/03/17 00:40:59
>>196>>197
Live Object はわからないが、古いこと知ってそうだから聞いてみる。
最初っから .prototype スロットって在ったの?
199:デフォルトの名無しさん
08/03/17 01:08:03
>>197
LiveScriptじゃないの?
>>198
手元にあるJSのリファレンス本みると、prototypeはIE4.0、NS3.0からの対応みたいだから、
バージョン的に言うとJavascript1.1からの対応らしい。
最初からあった訳じゃないと思うけど、当時を知らないから正確なところは分かりません。
200:デフォルトの名無しさん
08/03/17 02:45:06
Javascript 1.0になった時点で、
SunのSelfベースの言語になっているはずだけどな。
まだprototypeの機構を全て揃えてなかったのかも。
201:デフォルトの名無しさん
08/03/17 08:42:26
Live Documentのこといってんじゃないの?
202:198
08/03/17 13:15:28
>>199
prototype は Netscape 3.0 からじゃなかったかなーと記憶してたもんで、ありがとう。
んでちょっと調べてみた。
URLリンク(web.archive.org)
Netscape 2 からの変更
URLリンク(web.archive.org)
JavaScript 1.1 の prototype の説明
JavaScript 1.0 の文書は見当たらないけど、やっぱり Netscape 3.0 からっぽい。
で、Netscape 2.0 のインストーラ(n32e20.exe)探して、入れて確認したら、
javascript:function Foo(){};Foo.prototype.hello="hello";o=new Foo();alert(o.hello)
JavaScript Error:
prototype has no properties
だった。やっぱり 1.0 だと prototype 無いのね。
function 使ったユーザオブジェクトの生成はできたけど。
javascript:function Foo(name){this.name="2chneller"};o=new Foo();alert(o.name) // 2chneller
203:デフォルトの名無しさん
08/03/17 13:46:07
>>179>>182
URLリンク(mozillalinks.org)
実装も速くなってる、python 並みかは知らないが。
204:デフォルトの名無しさん
08/03/17 13:49:57
昔はprototypeは関数コンストラクタがnewされた後に作られた。
function obj{
//hoge
}
a = new obj():
a.prototype.foo=function(){//hoge}
------------------------------------
関数オブジェクト.prototype = hogeはエラー。
インスタンス.prototypeは可能。
javascript1.2までこのルールで1.3でecma-262準拠になって
関数オブジェクト.prototype = hogeが許されるようになった。
205:198
08/03/17 16:47:14
そのようで
------
function Foo(){}
o=new Foo() //*1
Foo.prototype.hello="hello"
o=new Foo()
alert(o.hello)
------
Netscape 2.0 -> Error: prototype has no properties
Netscape 3.0 -> ok: hello
*1 の行がないと Error: Function.prototype has no property named 'Hello'
Netscape 4.0(js1.2 だよね。not 4.06以上) だと *1 なしでもいけるけど、
プラットフォームによるかも。やってみたのは全部 win32
Ajax 以前というか Netscape4 までのネスケ全盛時代はあんまり
prototype 使ってなかったと思うんだけど、納得。
206:デフォルトの名無しさん
08/03/20 14:12:30
nn4.0はjs1.3だぞ
207:デフォルトの名無しさん
08/03/20 20:06:48
NN4.0〜4.05 - js1.2
NN4.06〜NN4.xx - js1.3
だと聞いてるんだけど。
URLリンク(www.din.or.jp)
とか
208:デフォルトの名無しさん
08/03/23 14:25:10
3月頭にRhino1.7R1が来たけどここであがってないね。
debuggerキーワードが有効になってイテレータ・ジェネレータが使えるようになったけど
SpiderMonkeyでもまだ1.7は浸透してないかな。
なんかPythonぽくなってきたね。
209:デフォルトの名無しさん
08/03/23 16:26:50
>>208
気づいてなかった
letも実装されてるみたいだし
これはいいね
210:デフォルトの名無しさん
08/03/23 21:26:56
次の問いに答えなさい。
new function() {
var window = {window:null};
// ここでGlobalオブジェクトであるwindowを取得しなさい。(10点)
}
灘中学入試問題 2008年度
211:デフォルトの名無しさん
08/03/23 22:04:45
ブラウザの実装は板違い
212:デフォルトの名無しさん
08/03/24 18:05:15
1.7すごいな。フィボナッチ数列が恐ろしく簡単にかけるぞ。
function fib()
{
var [a, b] = [0, 1];
while (true) {
yield b;
[a, b] = [b, a + b];
}
}
var f = fib();
// 100 以下のフィボナッチ数を表示
for (let i in f) {
if (i > 100) break;
print(i);
}
213:デフォルトの名無しさん
08/03/25 00:16:15
今頃どうしたんだ? 1.7の新しい処理系でも出た?
214:デフォルトの名無しさん
08/03/25 01:01:12
>>213
>>208
215:デフォルトの名無しさん
08/03/29 02:55:35
greacemonkeyで1.7が動いたらいいなあ
216:デフォルトの名無しさん
08/03/30 07:54:02
>211
そんなの書いたら構文エラーです。
正解は
valueOf();
もしくは
eval.call(null,"this");
他にもあるかもしれません、さすが灘中学
217:デフォルトの名無しさん
08/03/30 10:56:50
板違いが理解できん馬鹿は消えろ
218:デフォルトの名無しさん
08/03/31 00:59:46
eval.call
これはダメだろ?
219:デフォルトの名無しさん
08/03/31 11:22:25
そういう細かいこといいだしたらブラウザの実装はGlobalオブジェクトが複数ある時点で仕様満たしてないとか色々突っ込みどころがある。
220:デフォルトの名無しさん
08/03/31 11:23:21
このスレは細かいところいっていいんじゃない?
221:デフォルトの名無しさん
08/03/31 12:36:31
eval.call(null,'this')はECMA的に言っても駄目だろ。落第。
222:デフォルトの名無しさん
08/03/31 14:19:27
>eval.call(null,'this')
まあこれは力技のひどいコードであることは違いないけど
223:デフォルトの名無しさん
08/03/31 14:41:03
力技とかじゃなくて、それでGlobalとれたらECMA違反
224:デフォルトの名無しさん
08/03/31 16:57:00
>>216
対象がブラウザっぽいのにどっちもIEで動かないので落第です先生。
(function(){ return this })();
225:デフォルトの名無しさん
08/03/31 17:03:04
JScriptはそもそもコンテキスト周りEcma満たしてないよ
226:デフォルトの名無しさん
08/03/31 17:06:04
RhinoはトップレベルコンテキストからGlobalでアクセスすると取れるんだよね。
var foo = new Global();なんてやると・・・
227:デフォルトの名無しさん
08/03/31 21:43:39
>>221
どこがだめなん?
15.1.2.1を読む限りでは直接呼出し以外をエラーとするのは
mayであってmustではないようだけど。
228:デフォルトの名無しさん
08/03/31 23:36:47
10.2.2
229:デフォルトの名無しさん
08/04/01 00:27:17
var a = this;
var b = eval.call(null, 'this');
var c = a == b;
cがfalseになることがある実装はECMA-262 3rdに違反。
cがどんなときもtrueになる実装はECMA-262 3rdに違反してない。
bの行で例外が投げられる実装もECMA-262 3rdに違反してない。
だよね。
230:デフォルトの名無しさん
08/04/03 18:59:10
おまいら、オレの理解を超えた会話はするな。これは命令だ。
231:デフォルトの名無しさん
08/04/03 20:08:48
>>230
理解できる範囲を明示してくだしあ><
232:デフォルトの名無しさん
08/04/03 20:21:44
print('hello, world');
233:デフォルトの名無しさん
08/04/03 22:03:06
>>230
その命令は、どのコンテキストで実行する?
234:デフォルトの名無しさん
08/04/03 22:13:58
ここじゃね?
eval.call(null, 'this');
235:デフォルトの名無しさん
08/04/10 21:32:53
正直1.6以降ついて行けませんってのどれくらい居る?
236:デフォルトの名無しさん
08/04/11 15:38:09
ECMAScript 1.6 ですか?
237:デフォルトの名無しさん
08/04/11 20:06:42
ついていけないっつーか、
いつになったら新しい機能を使ってもいいか
タイミングをはかりかねている。
238:デフォルトの名無しさん
08/04/11 20:26:02
ローカルならいいけど、
やっぱ公になってるWebでは使えないよな。
あと3年くらい?
239:デフォルトの名無しさん
08/04/12 03:20:12
最長一年半じゃない?
ブラウザをアップデイトしない選択肢はないから。
240:デフォルトの名無しさん
08/04/12 07:31:57
>>239
いや、結構古いまま使ってる人多いよ。
241:デフォルトの名無しさん
08/04/12 10:19:39
うちのアクセスログ、今でもIE5とかある。
242:デフォルトの名無しさん
08/04/12 11:53:15
>>241
NS4.7とか言うのもまだあったりするからなぁ
243:デフォルトの名無しさん
08/04/12 11:55:04
IEなんて2のころからまともに使ったことないが
シェルに食い込んでるからバージョンアップだけはやってるな。
244:デフォルトの名無しさん
08/04/12 18:02:45
マルチプラットフォームに使えるgeckoとwebkitとoperaだけ確認しておけばok。
245:デフォルトの名無しさん
08/04/12 18:15:22
IEはどのみちJavaScript動かないしね。
246:デフォルトの名無しさん
08/04/12 20:37:03
JScriptってコンテキスト周りでecmaすら満たしてなかった気がするが
247:デフォルトの名無しさん
08/05/07 20:28:36
es4はどうよ?
俺は正直イラネ
248:デフォルトの名無しさん
08/05/07 21:41:59
ActionScript同様に扱える予定なんだろ、方向性自体は悪くないんじゃね?
まあ現物見てみないとアレだが、長い目で期待してるよ
どうせIEでも使える日は当面来ない
249:デフォルトの名無しさん
08/05/07 23:35:02
>>247
別の言語だと思ってるので遠くから見てる。
>>248 も言ってるようにWebで使いものになるのは当分先だろう…
250:デフォルトの名無しさん
08/05/08 06:15:58
es3のほうが言語として美しい。es4はキメラ化した愚作。
251:デフォルトの名無しさん
08/05/08 17:37:52
確かに言語としてはes3の方が美しいよな。
クラスベースにしたのにプロトタイプのこすとかイラネ。
まあIEがまともに実装することは永久にないのでwebでは日の目見ないだろうな。
標準クラスライブラリが多すぎるのも問題だ。
252:デフォルトの名無しさん
08/05/08 18:12:50
とはいえprototype.jsとか使って疑似クラスとか定義しているのが主流なのを見ると、
言語の機能としてクラスベースを取り入れるのも正しい方向性っちゃそうなのかもしれない。
既存のクラスをprototypeで拡張できなくなるのはちょっと寂しいけどな。
253:デフォルトの名無しさん
08/05/08 18:25:13
prototype.jsって別にいらないと思うんだがそんなにプロトタイプベースは嫌いかね?
254:デフォルトの名無しさん
08/05/08 18:39:39
今のところ既存のクラスをprototypeで拡張出来るはずだが。
es4 は今がりがり仕様を削ってるところなので様子見。
es3.1 がちっとづつ進んでて興味深い(MS主導)
255:デフォルトの名無しさん
08/05/08 20:23:02
>>253
俺もprototype.jsは嫌い。
つーか、マトモな感覚してたらあんなwarning出まくりのライブラリなんて気味悪くて使えん。
256:デフォルトの名無しさん
08/05/09 01:10:40
そのマトモな感覚ってのがecmaの仕様理解しててプロトタイプベースも使いこなしてるって事だから
実際にajaxアプリ書いてる連中には居ないだろうな。
257:デフォルトの名無しさん
08/05/11 04:26:31
このスレ見て俺ってまだ勉強不足なんだなって思ったよ
ああ・・・
258:デフォルトの名無しさん
08/05/13 13:49:16
似非クラスベースやりたいだけならprototype.jsなしでも
継承モデルとか作れなくもないしな
カプセル化の面で多少悩みは残るけど
でもjQueryは手放せない
259:デフォルトの名無しさん
08/05/13 13:56:49
継承させる場合はFunction.apply()使えば良いけどミックスインしか出来ないんだよな。
260:デフォルトの名無しさん
08/05/14 09:11:18
Yahoo UIってどうよ
めちゃくちゃメソッド・プロパティあるけど
261:デフォルトの名無しさん
08/05/14 11:57:47
ecma-262関係ないな。
262:デフォルトの名無しさん
08/06/19 16:14:32
fx3がリリースされてjs1.8が登場したわけだが・・・rhinoはまだか!?
263:デフォルトの名無しさん
08/06/19 20:20:40
1.8以前に1.7R2がまだ…
URLリンク(blog.norrisboyd.com)
264:デフォルトの名無しさん
08/06/19 22:08:11
SpiderMonkey の 1.8 が出てからじゃない?そうでないと仕様確定できないとか?
Fx 3.0.* が結構出てからでしょ。
URLリンク(developer.mozilla.org)
もまだいまいち、JSON, Slice Syntax は js には入ってないし、
URLリンク(bugzilla.mozilla.org)
が入ってない。
265:sage
08/06/29 22:55:41
tamarin付属のescにて、
es> eval("2/1");
SyntaxError: (EVAL CODE): Binding form not legal: {/*NamespaceFixture*/ 'ns': {/*InternalNamespace*/ 'name': '<#internal (EVAL CODE)>'}}
となるのはなぜですか?
266:デフォルトの名無しさん
08/06/29 23:43:48
まだ文法パースすら出来てないんじゃない?
RIもそんな感じだし。
267:デフォルトの名無しさん
08/06/30 00:03:49
文法ころころ細かく変わってるからおかしくなるのは仕方ないんだけど、
数値まわりは lexer がおかしいのかも。
RI-M2 で function test2d {...} とやったらエラー出たのはびっくりした。
(2d で数値リテラルと解釈したらしい、なんじゃそら)
268:デフォルトの名無しさん
08/06/30 15:03:08
>>267
function test2d() { ... }
じゃないんですか。
269:デフォルトの名無しさん
08/06/30 17:32:35
>>268
typo った。スマン
270:デフォルトの名無しさん
08/07/06 23:17:16
無名関数を #(x,y)と書く処理系があったのですが、他でも同じように書いて動くのでしょうか?
271:デフォルトの名無しさん
08/07/06 23:24:58
初めて聞いたkwsk
272:デフォルトの名無しさん
08/07/07 13:13:42
右シフト演算子、「符号ありが >> で、符号なしが >>>」に
決めたのはなぜだろう。
「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
しっくり行くのに。っつーかそう誤解してた。
更に、逆に解説してるサイトもある。
273:デフォルトの名無しさん
08/07/07 13:56:35
>>272
符号の分をさらにシフトすると何がうれしいんだい?
274:デフォルトの名無しさん
08/07/07 14:13:07
>>273
質問の意図がよく判らないけど、
負の数を負のまま扱えるから嬉しい。
算術シフトの名の通り。
275:デフォルトの名無しさん
08/07/07 14:25:28
>>274
負の数のまま扱いたければ、普通に算術シフトを使う処理系で>>すればいいだけ。
何かカンチガイしてないか?
276:デフォルトの名無しさん
08/07/07 15:20:24
よく判らんなー。
元々は>>272の「>>と>>>を誤解してる人がいる」って話なのに、
>>273が「何がうれしい」と謎の質問をしてるのが、こじれの発端だ。
嬉しい/嬉しくないっていう評価軸の話は元の質問には無関係。
>>275も何か変な事を言ってる。
算術右シフトも論理右シフトも、ECMAScriptの話であって、
「そういう処理系で」って話は、どう飛躍してるんだ。
277:272
08/07/07 15:26:46
何か話がややこしく(?)なった様で申し訳ない。
>>273
ビット操作物を書いてる時に、論理シフトを期待して>>を使ったら
MSB=1の時に意図しない動作をしたのが発見の経緯だったので、
「符号をシフトされて(私個人が)嬉しくなかった」という話。
で、>>と>>>を今の様に割り振った理由を知りたいな、と。
278:デフォルトの名無しさん
08/07/07 15:58:02
別に理由なんかないと思うがな。最初にそう決めたからそうなんだろう。
数学で足し算の記号に「+」を割り振ったのはなぜか?
とかいわれてもそう定義したからとしか言いようがなくね?
279:デフォルトの名無しさん
08/07/07 16:46:53
単に慣例に従っただけってのが大きいと思うよ URLリンク(d.hatena.ne.jp)
280:デフォルトの名無しさん
08/07/07 17:43:26
前例があるんじゃ、そりゃ従うわ。
でも>>272の
>「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
>しっくり行くのに。
はよく判る。
で、>>273は何を訊きたかったんだろう?
281:デフォルトの名無しさん
08/07/07 17:46:03
単に茶々入れたかっただけだと思うけどな
282:デフォルトの名無しさん
08/07/07 18:01:01
Number型は符号付きだから、
>>が算術シフトで、>>>が論理シフトである方が自然。
C言語でのsigned int + >>の多くの実装(ただし仕様的には未定義動作)と合致してる。
283:デフォルトの名無しさん
08/07/07 18:38:19
たぶんECMAScriptが慣例にあわせてるってのはわかってて聞いてるんだと思うんだけど…
数値型に対する演算子なんだから算術シフトの方が自然な動作で
論理シフトの方が例外的な振る舞いだよな…
「符号の分を更に…」って感覚はちょっとわからないな…
シフトしてるビット数は算術のほうが少ないわけだし
284:283
08/07/07 19:18:50
なんか違うなw
シフトしてるビット数は同じで、「最上位ビットを0にする」っていう処理が
追加されたのが論理シフトなんだから「符号の分を更に…」って感覚は
よくわからんと言いたかった。
285:デフォルトの名無しさん
08/07/07 19:33:44
>>280
いや、MSBを保存することを「更にシフトする」という言い方では普通は理解不能だろ。
俺もわからんかった。普通の算術シフトの後にもう1回シフトするのかと思ったよ。
286:デフォルトの名無しさん
08/07/07 19:50:15
>>284
わざわざ「最上位ビットを0にする」って訳じゃない。
左シフトだって、別に最下位ビットを0に「する」んじゃない。
アセンブラ経験者だと判ってくれるかな。
シフトは、左、右、算術右で、
論理型がデフォ、算術は敢えて明示するみたいな。
287:デフォルトの名無しさん
08/07/08 00:07:50
間違った自分はバカじゃないと同意してほしいわけですね、わかります。
288:デフォルトの名無しさん
08/07/08 03:22:22
結局、なんで「さらにシフトする」なんて言ったのか、ワケワカランと思うのは俺だけか?
自称よくわかった人が複数いるみたいだからw、教えてよ。
算術シフトのどこがどう「さらにシフトする」ことになるのか。
289:デフォルトの名無しさん
08/07/08 08:10:19
「更にシフト」じゃなく、「更にひと手間」だな。
290:デフォルトの名無しさん
08/07/08 09:07:18
更にひと手間つーか、MSBをイジらないだけじゃん。全然手間じゃないよ。
291:デフォルトの名無しさん
08/07/08 10:17:28
元の奴の感覚は判るが、言葉が悪い。
動作で<<と(空き位置に0が入るという)対称性があるのは>>>だが、
見た目の対称性は<<と>>だから、違和感がある。
と書けばよかった。
292:デフォルトの名無しさん
08/07/08 10:17:37
符号「拡張」っていうくらいで、
nビット(n>1)シフトする時は、
上位nビットに補填するけどな。
(いまどき1ビットづつシフトしない)
293:デフォルトの名無しさん
08/07/08 10:20:01
>>291
無理やり論理演算の視点になってるよ。
*2, /2だという算術演算の視点なら逆だ。
プログラマは暗黙の仮定に拘泥してはならない。
294:デフォルトの名無しさん
08/07/08 13:46:11
>>293
無理やりも何も、シフトは論理演算でしょ。
295:デフォルトの名無しさん
08/07/08 13:54:51
シフトはビット演算です。
11.7 Bitwise Shift Operators
11.7.1 The Left Shift Operator(<<)
>>は符号付き算術演算です。
11.7.2 The Signed Right Shift Operator(>>)
>>も符号なし算術演算です。
11.7.3 The Unsigned Right Shift Operator(>>>)
296:デフォルトの名無しさん
08/07/08 14:02:04
>>293
なまじ*2、/2の代用になってるからなー。
っつーか、この発想こそアセンブラだ。
なのにアセンブラ的発想は少数派になってる不思議。
297:デフォルトの名無しさん
08/07/08 14:22:08
C/C++みたいにbit長も内部表現も仮定しない仕様を持つ言語の「仕様を」知っ
ている人と、Java,Javascriptのようにbit長規定、内部表現も暗に仮定し
ている言語しか知らない人では、かなり温度差があるんじゃないでしょうかね。
前者は、言語習得時に仕様を確認する習慣があると思います。仕様を確かめな
い感覚派は、アセンブラ知っていればこう考えるはずと、自分の感覚に陥って
しまうんじゃないでしょうか。
298:デフォルトの名無しさん
08/07/08 15:15:53
ビット演算で32ビットに丸められるのは、レジスタ幅等の効率の面から判るんだけど、
整数リテラルの±2^53って、どういう根拠なんだろう。
IEEE754の64ビット表現だと、仮数部は52ビットだし。
299:デフォルトの名無しさん
08/07/08 16:08:22
仮数部52ビットの上に、見えない1が立ってるからでは?
300:デフォルトの名無しさん
08/07/08 16:32:06
本当にアセンブリ言語を知ってる人ならば符号付き演算と符号無し演算に最低限の注意は向けるはずです。
変な思い込みで符号に注意を向けない人は、生兵法でアセンブリを使っている人でしょう。
301:デフォルトの名無しさん
08/07/08 17:15:40
>>299
あーそっか。俺バカ。
302:デフォルトの名無しさん
08/07/08 17:16:55
>>300
最初のネタに戻ると、間違えて逆に解説してる本やサイトがある。
303:デフォルトの名無しさん
08/07/08 22:35:02
そりゃ注意はしてても、まさか演算子の動作を逆に解説してるとは思わないよな。
複雑な関数やバグの確認ならともかく、演算子を事前にテストしてから使う様な事はしないし。
304:デフォルトの名無しさん
08/07/08 23:38:29
Webのクソみたいな解説サイトとかあてにしてたらダメだろ
書籍で間違った解説してるものがあるなら被害者を減らすためにも書名を晒すべき
305:デフォルトの名無しさん
08/07/08 23:45:52
今なら乗除はコンパイラ任せの*/で良いね。シフトはunsignedだけで良いんじゃね?
306:デフォルトの名無しさん
08/07/08 23:49:18
コンパイラの意義は抽象化にあるんだから、
シフトはビット操作にだけ使うべきでしょ。
符号の有無じゃなく。
307:デフォルトの名無しさん
08/07/08 23:58:03
My UNIX Series 『入門 JavaScript』、久野靖、アスキー
P.43
■2項演算子
〜(中略)〜
●<<、>>、>>>
左シフト、右シフト、算術右シフト。
奥付では初版。
以降の版で直ってるかは不明。
308:デフォルトの名無しさん
08/07/09 00:27:41
まさかだけど、==と===みたいに
途中で意味が入れ替わった訳じゃないよね?
309:デフォルトの名無しさん
08/07/09 09:58:00
あれは痛かったなw
310:デフォルトの名無しさん
08/07/09 10:27:43
>>308
revision 1の仕様書を読んだが、
The left shift operator ( << )
The signe3d right shift operator( >> )
The unsigned right shift operator( >>> )
というわけで、変わってはいないようだな。
久野さんにしては珍しいチョンボだね。
311:デフォルトの名無しさん
08/07/09 12:04:33
久野さんって、fjでお馴染みの、
高校の情報の教科書を書いてたりする人?
312:デフォルトの名無しさん
08/07/09 13:15:28
fjナツカシスw
313:デフォルトの名無しさん
08/07/10 18:53:58
ES4では、byte型、int型, uint型が増えますが、
shift演算子の意味はES3のままのようですね。
少なくともtamarinでは、今のところそう実装されています。
314:デフォルトの名無しさん
08/07/10 19:25:44
だからなに?
315:デフォルトの名無しさん
08/07/10 19:46:11
つ お知らせ
316:デフォルトの名無しさん
08/07/10 23:54:34
random seed ってないのね。
まったく同じ乱数列をもう一度再現したいんだけど、
自前でそういう乱数を持つしかないか。
そういや、seed を2回設定すると
副作用で時刻が得られる言語があったよね。
317:デフォルトの名無しさん
08/07/11 00:48:57
>>313
> ES4では、byte型、int型, uint型が増えますが、
byte 型は×
URLリンク(bugs.ecmascript.org)
URLリンク(mail.mozilla.org)
int, uint 型も多分×
URLリンク(bugs.ecmascript.org)
AS(Tamarin) は独自拡張として残すんだろう、多分。
318:デフォルトの名無しさん
08/07/11 10:01:48
tamarinは、ES4モードじゃなくてASモードの時だけ
既存のint, uintを有効にするんじゃないかな。
ES4のint, uint除外は最近のことなので、
// lib-march-2008に関連ドキュメントも至急削除のコメント
tamarinはまだ追いついてないと思う。
319:デフォルトの名無しさん
08/07/11 10:20:45
>>316
awkだ。
srandすると、現在時刻がseedになる。
もう一度srandすると、前のseedを返す。
320:デフォルトの名無しさん
08/07/11 12:37:48
仕様変更しすぎだな
321:デフォルトの名無しさん
08/07/12 00:01:36
Number型、桁あふれで内部で勝手にfloat, doubleに昇格されると、
疑似乱数生成のアルゴリズム実装に神経使うよなあ。
322:デフォルトの名無しさん
08/07/17 03:24:05
var a() = function
{
this.b = function() {}
}
を、prototypeを使って書き直す場合、どうやって書けば良いのでしょうか?
323:デフォルトの名無しさん
08/07/17 03:29:37
なんだそりゃ
var a = function() { };
a.prototype = {
b: function() { }
};
324:デフォルトの名無しさん
08/07/17 14:29:38
>>322
一応言っとくが>>322と>>323のコードは等価じゃないぞ。
325:デフォルトの名無しさん
08/07/17 18:07:23
誰が等価なコードを望んだんだろう
326:デフォルトの名無しさん
08/07/18 05:17:50
aを実行しちゃっててわろた
327:デフォルトの名無しさん
08/07/29 14:56:37
var o = new Object();
o.f = function() {
return; // 内容は何でもいい
} // ←ここにセミコロン
(function() {
void 0; // 内容は何でもいい
})();
このままだとエラーで、o.f に代入する関数リテラルの最後にセミコロンを付けると問題ない。
ここは暗黙で文の区切りにならない?
328:デフォルトの名無しさん
08/07/29 16:47:10
ならないからエラーになるんじゃないかな。
とりあえず{}かfuncton() {...}に対する関数呼び出しとして扱われてるはず
329:デフォルトの名無しさん
08/07/29 19:35:26
暗黙な 文の区切りなんて obsolete ね いつか動かないはずのコード
330:デフォルトの名無しさん
08/07/30 01:43:38
というか仕様書読み直して来い
どの識別子が終端文字とみなされるか調べて来い
331:デフォルトの名無しさん
08/08/04 16:05:45
>>321
uintは欲しかったな。
ハッシュ計算、疑似乱数、ビット演算用に。
ブラウザ専用言語だと需要が少ないところだろうが。
332:デフォルトの名無しさん
08/08/04 23:46:54
es4は組み込み言語としての汎用性を求めてなかったっけ?
333:デフォルトの名無しさん
08/08/05 00:46:57
331だが、ちょっと調べてみると、
JITで型推論するからNumberあれば十分という戦略らしい。
少なくともtamarinはその方向みたいだ。
そりゃmodulo演算してれば、整数型なことが分かるけどなあ…
334:デフォルトの名無しさん
08/08/05 04:35:05
>>333
え、型推論をコンパイル時ではなくJITでやるのか・・・ある意味すげーな、それ。
一般の型推論は理論上NP完全だぞ。実際にはそこまで最悪なケースは滅多にないけど。
335:デフォルトの名無しさん
08/08/05 21:42:36
>一般の型推論は理論上NP完全
VMが型推論のパターンを学習すればいいんだ!
336:デフォルトの名無しさん
08/08/05 22:24:16
「できる」と「簡単にできる」は別物だろ
自分とこの処理系ならできるからいいって言われても…
337:デフォルトの名無しさん
08/08/17 08:30:22
URLリンク(tech.slashdot.org)
URLリンク(mail.mozilla.org)
338:デフォルトの名無しさん
08/08/19 09:42:55
ECMAScriptHarmony - ECMAScript Harmony
URLリンク(www.hyuki.com)
339:デフォルトの名無しさん
08/08/19 11:56:26
ES4あぼん、か。
340:デフォルトの名無しさん
08/08/19 12:27:53
>>339
packageがなくなるのも確定か…
packageだけは欲しかったのに
early binding, namespaceがなくなるのはいいんだが
341:デフォルトの名無しさん
08/08/19 23:55:05
ES ed.4がなくなってES ed.3.1を作るってこと?
まあ無難だがモジュール性の確保がなぁ。
342:デフォルトの名無しさん
08/08/19 23:59:08
プロトタイプベースOOP派の勝利だな。
343:デフォルトの名無しさん
08/08/20 02:37:40
>>341
4はなくなるわけじゃない。将来の候補の一つ。
大きく変える前に3.1を出して様子見。
MicrosoftとしてはActionscript牽制に成功。
344:デフォルトの名無しさん
08/08/20 02:50:29
>>342
それはまだこれからの協議。
package, early binding, namespaceがなくなること決定らしいが、
これは全く意味が分からない。
言語的にライブラリ管理補佐機構が大きく後退。
Ajaxに暗雲垂れ込める感じ。
345:デフォルトの名無しさん
08/08/20 15:46:07
early binding はコンパイル時エラー検出や、class や namespace を
コンパイル時(静的)に決定することで速度改善と実行時書き換えによる
セキュリティエラーを防ぐ、ということだったんだが複雑化と実行時定義との
衝突がうまく解決できないということで OUT
package は namespace の構文糖、4月の段階で既に OUT だった。
namespace は識別子の拡張だったんだが、early binding 抜きだと
速度が落ちまくる。
ライブラリ機構は ES-ML ではいまのところ、Scheme の RSR5 というか、
Perl 類似のものを Dojo で採用されているような構文で検討中。
個人的には catchall が何とかなって欲しいんだが、namespace 抜きだと面倒そうなんだよなぁ
346:345
08/08/20 18:23:47
> Dojo で採用されているような構文で検討中。
間違えた、ES-ML で出てるのは Helma NG と Caja だった。
URLリンク(dev.helma.org)
URLリンク(google-caja.googlecode.com)
まぁ議論のベースになってるのはこれ。
URLリンク(wiki.ecmascript.org)
347:デフォルトの名無しさん
08/08/23 23:22:37
es4にはwktkがない!何故だ!?
348:デフォルトの名無しさん
08/08/24 11:38:18
公式に終わってんだからあっても困る、ES3.1 は?
349:デフォルトの名無しさん
08/08/24 12:19:00
型指定変数宣言
var hoge:Number;
も無くなったの?
350:デフォルトの名無しさん
08/08/24 14:12:33
それは困るなぁ
351:デフォルトの名無しさん
08/08/24 16:57:42
型周りは一からやりなおし。どうなるかわからんが素案には
URLリンク(wiki.ecmascript.org)
> A type annotation has the syntax " : type-expression ".
とあるがな。
352:デフォルトの名無しさん
08/08/25 19:37:51
ECMAScript デス 3
が
らぶ デス 3に見えたメガネ買い替えてくる・・・。
353:デフォルトの名無しさん
08/08/25 20:01:58
メガネより変えるべきものがあるだろ
354:デフォルトの名無しさん
08/08/25 20:57:29
>>353
替えの入手先の問題が。メガネは店で売ってるが。
355:デフォルトの名無しさん
08/08/25 21:41:59
>>354
脳へ渡す情報なら幾らでも買えるが人生は売ってないからね。
356:デフォルトの名無しさん
08/08/26 08:17:51
死ねば負債は清算できるぜ
ES4は修正して継続するようだが。
357:デフォルトの名無しさん
08/08/26 08:23:20
へ?ES4は一旦清算するんでしょ?
やりたきゃES3.1ハーモニーの後にしろと。
358:デフォルトの名無しさん
08/08/26 08:34:14
URLリンク(weblogs.mozillazine.org)
もう Nightly に入ってるって聞いたぜ
359:デフォルトの名無しさん
08/09/03 14:58:15
おまいら的には Chrome よりコッチだよな
URLリンク(code.google.com)
360:デフォルトの名無しさん
08/09/03 15:39:27
もうJITしていられんな
361:デフォルトの名無しさん
08/09/03 19:48:00
V8 はコンパイラオンリーな実装なんだね。
これも JIT に入るのかな。
362:デフォルトの名無しさん
08/09/03 21:38:11
コードざっと見たけども「V8で(だけ)速く動く」書き方がありそうなんだよ
google提供のjavascript(mapsなんか)はそう書き直されるんじゃなかろうか
いわゆるひとつの非関税障壁になりそうな予感
363:デフォルトの名無しさん
08/09/03 21:58:32
ARMあたりに対応してるからそのうちアンドロイドに組み込まれるんじゃないかと
364:デフォルトの名無しさん
08/09/04 00:32:47
>>362
そんなものがない実装なんてないよ。
365:デフォルトの名無しさん
08/09/04 03:40:08
>>362
その懸念はありかもね
他インプリもgoogleのjavascriptを基準に最適化しはじめたりしてね
アホすぎるが
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5075日前に更新/110 KB
担当:undef