ECMAScript デス 3

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
《ECMAScriptを語るスレ》

1. - 概要 -
ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、
その他四方山話をするスレです。
- ECMA-262 3rd Edition 標準規格(英語)-
http://www.ecma-international.org/publications/standards/Ecma-262.htm
Under Translation of ECMA-262 3rd Edition (日本語訳)
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/


前スレ
ECMAScript デス 2
http://pc11.2ch.net/test/read.cgi/tech/1088298991/

過去スレ
JavaScript デス
http://pc5.2ch.net/test/read.cgi/tech/1052273054/
2デフォルトの名無しさん:2007/09/19(水) 09:08:50
2. - JavaScriptについて -
JavaScriptは動的Webページ作成専用言語ではありません。
このスレでは、★言語★としてのECMAScript(JavaScript、JScript等)の話題を扱います。
ブラウザ環境でのJavaScriptはWeb製作板へ。ASP、CGIなどはWebProg板へ。

●スレ違い●なレスの例
 + JavaScriptによるWebページの挙動実現に関する疑問/質問、は、
   ■スレ違い■です。→Web製作板へどうぞ
 + Webブラウザの動作挙動に関するの疑問/質問         は、
   ■スレ違い■です。→Web製作板へどうぞ
 + そのほか、Webページ作成に限定した内容の疑問/質問    は、
   ■スレ違い■です。→Web製作板へどうぞ

■参考■[Web製作板] + JavaScript の質問用スレッド vol.59 +
http://pc11.2ch.net/test/read.cgi/hp/1187856865/l50

※JavaScriptが板違いと言いたい人へ
運営サイドから次のような見解が出ています。
|459 飛べない削除屋 ★ sage :04/05/30 15:38 ID:???
|>‍>458
|ローカルルールにはひどく単純化されて書かれていますが、
|Javascript という言語そのものが板違いなのではありません。
|用途によって板違いかどうかを判断してください。
3デフォルトの名無しさん:2007/09/19(水) 09:09:56
3. - 主な実装 -
Rhino (Mozilla.orgでメンテナンスされている組み込みを目的としたJava製の実装)
http://www.mozilla.org/js/rhino/

SpiderMonkey (同上。ただしこちらはCによる実装)
http://www.mozilla.org/js/spidermonkey/

NJS (旧NGSを引き継いで開発されている独立したインタプリタ実装
http://www.njs-javascript.org/

JScript (Microsoft社による実装。WSHを介したローカルマシン用のバッチスクリプトとして使用に加え、.NETの開発言語のひとつでもある。
また、WebクライアントサイドスクリプトやASPにも利用することができる。)
http://www.microsoft.com/japan/msdn/library/ja/script56/html/js56jsoriJScript.asp
JScript .NET
http://www.microsoft.com/japan/msdn/vs/jstchjscripttechnicalarticles.aspx

DMDScript (Digital Mars社による実装。Windows上で利用できるJScript置き換え的な位置づけ
スタンドアロンのインタプリタに加え、COMコンポーネントとして組み込むこともできる。)
http://www.digitalmars.com/dscript/index.html

FESI (ECMAScript第一版に準拠したJava実装)
http://www.lugrin.ch/fesi/index.html

DMonkey (Delphi(ObjectPascal)への組み込みを目的とした実装)
http://sourceforge.jp/projects/dmonkey/

Tamarin (Adobe から Mozilla.org に寄贈された JIT 付きの仮想マシン。
コンパイラは含まれないので、ECMAScript のソースを直接実行することはできない。)
http://wiki.mozilla.org/Tamarin
4デフォルトの名無しさん:2007/09/19(水) 09:10:35
4. - 関連スレ -
Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
WebPrograming板などの専門スレをご利用ください。

[Web製作板] + JavaScript の質問用スレッド vol.59 + ((クライアントサイド方面))
http://pc11.2ch.net/test/read.cgi/hp/1187856865/l50
[WebProg板] Ajaxでも語りませんか Rigel4
http://pc11.2ch.net/test/read.cgi/php/1166751613/l50
5デフォルトの名無しさん:2007/09/19(水) 09:54:32
>>1
スレ立てありがとうデス
6デフォルトの名無しさん:2007/09/19(水) 09:59:13
Rhino 1.6 release 6 2007 09 01
js> print(">>1 乙")
>>1
js>

Tamarinは自己完結コンパイラに食わせてTamarinで実行するんじゃなかったっけ?
確か今、自己完結コンパイラを開発中のはず。
まあ、いずれRhinoみたいにバイトコードコンパイラもネイティブになるんだろうけど。
7デフォルトの名無しさん:2007/09/19(水) 15:02:11
スクラッチからの件は以後ここで

「スクラッチから」を撲滅する会
http://pc11.2ch.net/test/read.cgi/prog/1190181646/
8デフォルトの名無しさん:2007/09/19(水) 18:49:17
まあ、英語の慣用句だから日本人には解せないよなw
9デフォルトの名無しさん:2007/09/19(水) 19:25:29
一応その他の関連規格も。

Standard ECMA-290 ECMAScript Components Specification
http://www.ecma-international.org/publications/standards/Ecma-290.htm

Standard ECMA-327 ECMAScript 3rd Edition Compact Profile
http://www.ecma-international.org/publications/standards/Ecma-327.htm

Standard ECMA-357 ECMAScript for XML (E4X) Specification 2nd edition
http://www.ecma-international.org/publications/standards/Ecma-357.htm
10デフォルトの名無しさん:2007/09/19(水) 22:08:58
>>6
>Tamarinは自己完結コンパイラに食わせてTamarinで実行するんじゃなかったっけ?
>確か今、自己完結コンパイラを開発中のはず。

これだね。
http://wiki.mozilla.org/Tamarin:WeeklyUpdates/2007-09-11#Self-hosting_Compiler

ソースはここ。
http://hg.mozilla.org/tamarin-central/?file/049a855c8d5a/esc/

ま、俺も Haskell スレで教えてもらったんだけど…
11デフォルトの名無しさん:2007/09/19(水) 23:42:52
>>10
俺が見たときより進んでるっぽいな。まあ製品化は当分先だろうけど。

ecma-327はecma-262 ed.3のサブセットのやつか。
組み込み向けブラウザくらいでしか実装を見たことがないなぁ。
12デフォルトの名無しさん:2007/09/20(木) 01:32:46
いまいちよくわからないんだけど、

1. ES4 RIでesc/src/*.esを入力としてesc/src/*.esを実行
2. esc/bin/*.abcが生成される
3. (esc/src/*.esをいじる)
4. Tamarinでesc/src/*.esを入力としてesc/bin/*.abcを実行
5. esc/bin/*.abcが生成される
6. Tamarinで任意のECMAScriptコードを入力としてesc/bin/*.abcを実行
7. 任意のECMAScriptコードが実行される
8. 3に戻る

という流れでよろしい?
13デフォルトの名無しさん:2007/09/21(金) 18:52:58
>>12
4と5はまだじゃないかな。
ES4 にあるけど AS3 にない構文(switch type とか)使ってるところがあるし。

インメモリにバイトコード生成して実行(Tamarin インタプリタ)
は出来始めたようだけど。

リファレンス実装M0 だと native 関数足りない(write,read)んで
試せないのが泣ける。はよ M0.5 でいいから出してくで
14デフォルトの名無しさん:2007/09/27(木) 18:38:03
var f = function() {};
f.key = "value";

こいつのJSON化ってできる?
15デフォルトの名無しさん:2007/09/28(金) 04:12:51
型の違いでしかないからデータとして持つ場合は無意味だぞ。

var f = {key : "value"}

これと同義。

JSONにするんじゃなくて普通に文字列受け取ってエバルした方がマシ。
16デフォルトの名無しさん:2007/10/05(金) 20:27:42
俺発見!
isNullOrUndefined を評価する演算
(value != value - 0)
これ!
var a = [null,undefined,,"",false,0,-0," ","0","00",0x0];
for (var i = 0; i < a.length; i++)
a[i] = (a[i] != a[i] - 0);
a;

IE7とFF2以外の環境でも期待する結果でる?


17デフォルトの名無しさん:2007/10/05(金) 22:44:44
普通に
val === null || val === void(0)
と書く場合より高速だったりする?
18デフォルトの名無しさん:2007/10/05(金) 23:10:23
絶対遅いこと請け合いです。
""と0をtrueにしたかっただけなんです
決して若くもありませんが若気の至りです。ごめんなさい
19デフォルトの名無しさん:2007/10/06(土) 06:00:35
val == null で十分じゃ?
20デフォルトの名無しさん:2007/10/06(土) 07:39:07
!valじゃ駄目なの?
21デフォルトの名無しさん:2007/10/06(土) 08:15:44
>>20
isNullOrUndefinedという名前をそのまま解釈するなら
0やNaNでもtrueを返す(0やNaNがnullまたはundefinedと判断される)からだめ。
でも「""と0をtrueにしたかった」なんて言ってるから
そもそも>>16の望んだ動作が何だったのかよくわからない。
22デフォルトの名無しさん:2007/10/07(日) 17:52:07
cssで "" と 0 は有効な値?だからスルーしたくて
だどもcss値にnullとundefinedは
プロパティによってえげつない結果なるじゃない?

(0 || 1) みたいにnullとundefinedだけ1の方いかないかなと思った次第です
23デフォルトの名無しさん:2007/10/07(日) 18:42:51
isNullだったかNumber.isNullだったかecmaでなかったっけ?
24デフォルトの名無しさん:2007/10/07(日) 19:51:39
ないよ。つか >>17>>19 で FA だろ。
ただ >>19 とかは後で読み間違えるから俺はオススメしない。
25デフォルトの名無しさん:2007/10/13(土) 06:30:59
Javascriptを勉強し始めたばかりのものですが
↓の様なブックマークレットを見つけたのですが
javascript:void(function(){var%20q=(document.all)?document.selection.createRange().text:document.getSelection();
if(!q){void(q=prompt('Google検索',''));}if(q){location.href=('http://www.google.com/search?hl=en&oe=UTF-8&ie=UTF-8&q='+q.replace(/_/g,'-'));}})()

if(!q)の!って何ですか?

あと 
javascript:var%20q=document.getSelection();if(!q){q=prompt('Google検索','')}if(q){location.href=('http://www.google.com/search?hl=en&oe=UTF-8&ie=UTF-8&q='+q);}
といろいろと削っても動いたのですがもしかして問題があったりしますか?
まだJavascriptをいろいろと勉強し始めて二日と立ってないので
変な質問してるかもしれませんがよろしくお願いします
26デフォルトの名無しさん:2007/10/13(土) 06:40:20
板違い
27デフォルトの名無しさん:2007/10/13(土) 07:11:44
>>26
あーWeb製作板に質問スレあるのに気づかなかった・・・
すみませんでした
28デフォルトの名無しさん:2007/10/18(木) 18:18:11
ところで、prototype.js作った奴は仕様ちゃんと理解してるんだろうか?
突っ込みどころがありすぎて使えないんだが。
ecma-262からみてどうだろうか?
29デフォルトの名無しさん:2007/10/18(木) 19:40:39
JavaScript を ruby 風に使うライブラリに ECMA3 からどうこう言っても意味なくね
30デフォルトの名無しさん:2007/10/18(木) 20:51:30
null.toString()
がないのに
null+""
が可能なのは誰のおかげ?
31デフォルトの名無しさん:2007/10/18(木) 21:45:33
>null+""
普通そんなことしないw
なんのためにnullがあるんだよ。

そういえば標準でnullのプロトタイプにアクセスする手段はないな。必要ないが。
32デフォルトの名無しさん:2007/10/19(金) 15:07:37
>>30
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/9_Type_Conversion.html
11.6.1 の 加法演算子 と 9.8 の ToString 演算子の定義により可能になってる.
33デフォルトの名無しさん:2007/10/24(水) 00:02:29
ECMAScript 第4版の最終ドラフトが公開 - JavaScriptデベロッパは注目を
http://journal.mycom.co.jp/news/2007/10/23/032/index.html

こんなに欲張った新機能で大丈夫かいな・・・
34デフォルトの名無しさん:2007/10/24(水) 00:46:58
大丈夫
35デフォルトの名無しさん:2007/10/24(水) 03:12:51
むしろ今まで貧弱すぎたかと。
これからどんどんサーバーサイドのPHP, J2EE辺りの役割を果たしていくんだろうから。
メーラ、カレンダ、メモ帳、簡易ワープロ&表計算
この辺りが全部webアプリになってきたからね。
正直、Javaみたいなしっかりしたsecurity modeを持たない
Javascriptがこれほど長生きするとは思ってなかったが。
36デフォルトの名無しさん:2007/10/24(水) 03:32:15
>>35
うけたw
37デフォルトの名無しさん:2007/10/24(水) 04:11:37
少なくともこのスレが終わるまでは
ECMAScript 4はMozilla製品以外では
使われないと予言しておこう。
38デフォルトの名無しさん:2007/10/24(水) 04:47:10
W3C次第じゃないかな。
一昔前ならMSが唯我独尊で無視だったろうけど、
最近はEUの思惑に結構押されているから。
C#や.NETではECMA標準の重要性を訴えているしねw

しかし最近はAJAX系が増えてきて、
Javascript処理系が軽くないと、軽いブラウザとは言えなくなってきたな。
39デフォルトの名無しさん:2007/10/24(水) 10:09:02
>>37
Operaも標準規格マンセーなブラウザだし、Mozillaと同じぐらいの速度で実装してくれそうだけど。
40デフォルトの名無しさん:2007/10/24(水) 10:35:53
>>37
あと Adobe な。Tamarin。

IE に対しては
http://wiki.mozilla.org/Tamarin:ScreamingMonkey
んなことしてるしな。テスト程度は動かせるようになったみたい。
41デフォルトの名無しさん:2007/10/24(水) 12:40:41
Tamarin - MozillaWiki
http://wiki.mozilla.org/Tamarin

ActionMonkey, the integration of Tamarin and SpiderMonkey for Mozilla 2.
Tamarin:IronMonkey, the mapping of IronPython and IronRuby to Tamarin.
Tamarin:ScreamingMonkey, integration of Tamarin as a <script> engine in
other browsers, starting with IE.

これやね。ActionMonkey, IronMonkey,ScreamingMonkeyプロジェクトか…
SpiderMonkeyとの統合, IronPythonとIronRubyから操作, <script>を用いて
ブラウザ内で Tamarin を利用できるようにする試み。ですな
42デフォルトの名無しさん:2007/11/14(水) 02:00:59
恐ろしく汎用言語化してるな。
こりゃRhinoの再実装に時間食いそうだ。
今までの実装も名前とバージョン引き継いで
別コードベースで書き直しとかした方が楽そうだと、一瞬思ったがed.3と互換性持ってるんだったな・・・。

あと、JavaScript2.0の策定に1年、実装に1年くらいかねぇ。
43デフォルトの名無しさん:2007/11/14(水) 09:01:05
livescript登場した時には、ここまで普及するとは思わなかった。
インタープリター系では一番実行されてる言語だし、
Ajax関連で重要性もどんどん高まっているから、
言語としてより強力にならざるを得ないだろうね。
なんでもできることをみんな望んでいるというか。
44デフォルトの名無しさん:2007/11/14(水) 10:44:31
Rhino だと Java の機能から援用できる部分もあるだろうけど
それでも実装1年だろうねぇ。

es4-pre-release.M1.source.tar.gz にある spec/schedule.txt 見ると

2008 Apr. Spec deadlines - Clean enough for commercial implementaters to start using it

なんで3ヶ月〜半年くらい遅れを見込んでも、来年半ばには実装に入れたらいいな。
45デフォルトの名無しさん:2007/11/14(水) 16:40:07
ECMAScriptは仕様が仕様だからパーサ部分手書きだろうしね。
46デフォルトの名無しさん:2007/11/14(水) 18:01:37
47デフォルトの名無しさん:2007/11/17(土) 01:36:40
現物にお目にかかれるのはやっぱり仕様策定と実装で2年はかかるっぽいね。
ttp://www.atmarkit.co.jp/news/200711/05/mozilla.html
48デフォルトの名無しさん:2007/11/17(土) 09:17:50
それはweb browser上、特にtamarinに移行するfirefox、での話でしょ?
単体の処理系はもっと早いよ。
49デフォルトの名無しさん:2007/11/17(土) 09:24:17
いずれにせよ、まともなクラスシステムを持つようになって大変めでたいです。
50デフォルトの名無しさん:2007/11/17(土) 17:10:19
ごめん、クラスイラネ関数型+prototypeパラダイム最高!派なんだ。
モジュラー性の確保だけで十分だったと思う。

いくらなんでもこれはやりすぎ、再学習のリスクと仕様満たした実装を作るコストが高すぎる。

けっきょく、クラス付けたのも関数型+prototypeパラダイムが理解できない連中の救済策でしかなく、
もともとここまではやるような言語じゃないんだから無理に一般に合わせる必要もないと思う。

AJAXとかいい加減うざいと思ってる。
51デフォルトの名無しさん:2007/11/17(土) 17:19:40
てかプロトタイプパラダイムがあればクラスなんて簡単に実装できるじゃん。
プリミティブなままにしときゃいいのに、と思ってしまったおれはscheme脳なのか
52デフォルトの名無しさん:2007/11/17(土) 17:34:03
>>50
package と namespace だけつかえばえーやん。
>>51
保護されないけどね。そこがいいんだろうけど。
ところで R6RS はお嫌い?

C もどき文法で 型付と動的型の融合は Dylan 以来の挑戦
と思うと面白かったり。Perl 6 もあるけどさ。
53デフォルトの名無しさん:2007/11/17(土) 17:42:19
言語として面白いと思うが実装が普及するかどうか微妙じゃね…?
54デフォルトの名無しさん:2007/11/17(土) 18:14:04
ES4って面白みあるか?
55デフォルトの名無しさん:2007/11/17(土) 18:15:13
OreScript
56デフォルトの名無しさん:2007/11/17(土) 18:32:57
Java ライクな拡張文法の方に意識が行くのも分かるけど
一番重要なのは互換性があるってことだろう
57デフォルトの名無しさん:2007/11/17(土) 18:33:43
そんなRubyみたいなこと言わないでw
58デフォルトの名無しさん:2007/11/17(土) 18:34:14
5949:2007/11/17(土) 23:58:57
>>52
自分は、ECMAScript 4も、R6RSも万歳です。
正直異なるクラスシステムの間でポートするのうんざりなんですよ。
prototype.js逝って良し
60デフォルトの名無しさん:2007/11/18(日) 20:48:20
というかなんでprototype.jsがはやってんの化理解できない。
あんなライブラリ使うくらいなら自分で作るわ。

Object.prototypeの汚染は直ったのかね・・・?

61デフォルトの名無しさん:2007/11/18(日) 21:00:14
自分で作る方が理解できない。
あんなライブラリ作るぐらいなら、既にあるのを使うわ。
62デフォルトの名無しさん:2007/11/18(日) 21:06:07
>>60
批判するのはかまわないけど
もっとprototype.jsのことを知ってからにしたほうがいいよ

それじゃ「JavaScript?スクロールバーに文字流すやつでしょ」
といってる連中とそう変わりない
63デフォルトの名無しさん:2007/12/18(火) 04:08:19
横槍で俺も一言
base2ライブラリの構造が理解できない、base2ライブラリって難しくない?
64デフォルトの名無しさん:2007/12/18(火) 21:19:19
>>63
知らなかったんで調べたら
http://code.google.com/p/base2/
http://dean.edwards.name/weblog/category/base2/
http://base2.googlecode.com/svn/trunk/lib/src/

確かに歯ごたえあるなぁ、base2.js と base2-dom.js だけでも
いろんなもん(W3C-DOM,IE bug & spec,js1.6〜,ES4,prototype.js etc...)
知らないと読み解くのつらいわ。

http://dean.edwards.name/weblog/2007/03/rules/
に納得&理解できるとなるほどと思う。
65デフォルトの名無しさん:2007/12/18(火) 22:01:27
javascriptは他でやれ
66デフォルトの名無しさん:2007/12/19(水) 00:57:03
var obj = {
true:true
,false:false
,undefined:undefined
,null:null
,new:"new"
,if:"if"
,for:"for"
,switch:"switch"
,function:function(){}
};

こゆーの定義できるんだけど、これは合法?
67デフォルトの名無しさん:2007/12/19(水) 01:18:53
JavaScript 1.7以降ならOKだけどECMAScript 3だとだめだよ。
undefinedに関してはECMAScript 3でもOKだけど。
68デフォルトの名無しさん:2007/12/19(水) 01:29:53
objectリテラルのキーは全部文字列と見なされるからOKなんじゃね?
69デフォルトの名無しさん:2007/12/19(水) 02:08:30
70デフォルトの名無しさん:2007/12/29(土) 21:56:27
メタプログラミングみたいなことをやりたいのですが、
リフレクション系の機能はないですか?
メソッドを列挙したりしたいのですが・・・
rubyで言えば、Object.methods
71デフォルトの名無しさん:2007/12/29(土) 22:10:09
仕様書嫁。いくらでもやり方がある。
72デフォルトの名無しさん:2007/12/29(土) 23:09:01
ワカタ
メソッドあったら、for-inで、列挙できるのな

最初、
for(var i in 1234) {print(i);}
for(var i in "hoge") {print(i);}

とか、やって、なんで、うまくいかないんだろとかおもてて、
thisつっこんだらメソッド列挙できますた
サンクソ
73デフォルトの名無しさん:2007/12/29(土) 23:20:42
それだとメソッドじゃなくてプロパティの羅列だけどな。
74デフォルトの名無しさん:2007/12/29(土) 23:41:30
あ、本当だ・・・orz

しかも、WSH/JScriptでやったら、プロパティ列挙するできんぽいし
75デフォルトの名無しさん:2007/12/29(土) 23:46:45
typeof が "function" のを抽出
76デフォルトの名無しさん:2007/12/29(土) 23:49:21
そもそもメソッドって概念が存在しない。
メソッドっぽく見えるのは、プロパティに関数オブジェクトが代入されたもの。
77デフォルトの名無しさん:2007/12/30(日) 00:03:12
じゃあ真のメソッドってどんなのよ
78デフォルトの名無しさん:2007/12/30(日) 00:29:46
JavaScript Shell 1.4
http://www.squarefree.com/shell/shell.html

ここで、試してたんですが、props(this); とか Methodとか、Field全部出してくれました。
このpropsのソース参考にしてみます。

props(this);
では、ずらずらでるけど(typeof(this) = object)

props(Array.prototype);
props(String.prototype);
とかやっても、何も出ないのは、組み込みだからですか?
79デフォルトの名無しさん:2007/12/30(日) 00:51:25
すいません。
とりあえず、本来、動かしたい SleipnirのJavaScript互換(JScript?)の組み込みスクリプトの
for-in で、プロパティ、メソッドが列挙できないようなので、
あきらめますた。

何がやりたかったかといいますと、SleipnirのUserActionで、
ドキュメントにない、sleipnir 変数や、API変数が使えるので、
thisのプロパティになってるのかどうか、調べたかっただけなのです・・・。

Echo("do tmpScript.js");
Echo(typeof(this));
Echo("sleipnir:" + typeof(sleipnir));
Echo("API: " + typeof(API));
for(var i in this) { Echo(typeof(i)) };

やっても、for-inで何も出ねえので、あきらめ・・・

付き合って下さった皆さん、ありがとうございました。
80デフォルトの名無しさん:2007/12/30(日) 00:52:29
mozilla系の全てのオブジェクトの全ての
プロパティ書き出すコード書いたらメモリ食い過ぎて落ちた事あるな。
81デフォルトの名無しさん:2007/12/30(日) 01:38:48
>>77
だからない。あるのはclosure
82デフォルトの名無しさん:2007/12/30(日) 02:02:47
現状のECMAScriptの仕様にはメソッドなどないと。
第4版には盛り込まれてるけどな。
83デフォルトの名無しさん:2007/12/30(日) 02:53:49
関数オブジェクトと関数リテラルならあるけど。
でも結局プロパティに突っ込む。
てか、仕様書嫁。
84デフォルトの名無しさん:2007/12/30(日) 11:35:19
Javascript1.7が楽しい。Pytnonからyieldとリスト内包をパクってきた
んで非常に面白い言語になってる。インデントを強制されるPythonは
個人的につかう気にはならんがjs1.7はその代替になるね。
しかし、rangeは標準で入れておいて欲しかったな・・・
85デフォルトの名無しさん:2007/12/30(日) 11:44:45
うん、クラスもプリミティブ実装になって、
他のscript言語を駆逐する可能性あり。
Webブラウザが味方だし。

後はCPAN相当の構築。
namespaceとpackageがあるから容易と思われ。
86デフォルトの名無しさん:2007/12/30(日) 16:46:53
そういや外部ライブラリを読み込む記法って標準化されるのかな。
教えて詳しい人
87デフォルトの名無しさん:2007/12/30(日) 17:28:52
標準ならば、unit つかうことになるんでねーの
http://wiki.ecmascript.org/doku.php?id=proposals:program_units
AS3か4がどーするかはわからんけど。
88デフォルトの名無しさん:2007/12/30(日) 20:47:36
>>87
ありがとう。
外部ライブラリっていうか、外部のソースを読み込む方法について聞くつもりでした。
どちらにせよ、use使えばいけるのね。
早く使ってみたい。
89デフォルトの名無しさん:2007/12/30(日) 21:41:20
>>85
>後はCPAN相当の構築。

取り敢えず Python の標準ライブラリを一つずつ
ECMAScript にポーティングしていけば良いのかな
90デフォルトの名無しさん:2007/12/31(月) 07:23:49
1.7つかってみてぇ!っておもったけど
FireFoxだけっすか
91デフォルトの名無しさん:2007/12/31(月) 11:27:22
rhinoがあるよ
92デフォルトの名無しさん:2007/12/31(月) 12:05:23
rhinoは1.6です。
93デフォルトの名無しさん:2007/12/31(月) 12:06:48
94デフォルトの名無しさん:2007/12/31(月) 12:21:15
Rhino 1.6.R6 とかで JavaScript 1.5 機能が入ったりしてるし
Rhinoのバージョンと JavaScript のバージョンって完全一致してるわけじゃないよね?
そこに置いてある rhino1_7R1pre.zip は JavaScript 1.7 相当なの?
95デフォルトの名無しさん:2007/12/31(月) 12:40:16
DIY, RTFM
Do It Yourself, Read The Fucking Manual
96デフォルトの名無しさん:2007/12/31(月) 18:08:50
js1.7相当の実装は今のところspidermonkeyだけ。
97デフォルトの名無しさん:2007/12/31(月) 21:24:28
さすがリファレンスインプリめんてーしょん
98デフォルトの名無しさん:2007/12/31(月) 22:18:55
というかjs1.6はspidermonkeyのGCバグフィックスとArrayオブジェトにプロパティ増やしただけのメンテナンスリリースだからな。

rhinoの方はconstとか実装してなかったから1.6相当になったのもつい最近。
99デフォルトの名無しさん:2007/12/31(月) 23:11:37
>>98
前スレでも同じような話が出てたが、JS1.6が"1.6"というバージョン名を
持つにいたった最大の理由であるE4Xを忘れてもらっては困るな。
まあJS1.5.1となっていた可能性もあるわけだから
メジャーバージョンアップとも言い切れないのかもしれないが。
https://bugzilla.mozilla.org/show_bug.cgi?id=304828#c51

しかしGCバグフィックスがJS1.6の主機能の一つって言うのは
どこから出てきた話だ?GCがらみの修正なんてそれこそ
Mozilla 0.6からMozilla 1.7にわたる長いJS1.5の時代にも
JS1.6になって以降も繰り返されてることだろうに。
その話の根拠となる文書またはバグを示してくれるとありがたいんだが。
100デフォルトの名無しさん:2007/12/31(月) 23:16:49
E4Xはもともとrhinoで実装されてたしなぁ。
101デフォルトの名無しさん:2008/01/01(火) 09:57:17
あけましておめでとう

spidermonkeyをみなおしたおれがいる
102デフォルトの名無しさん:2008/01/17(木) 20:26:18
板違い&重複のjavascriptスレに抜かれそうな勢いとは皮肉だな。
103デフォルトの名無しさん:2008/01/18(金) 11:05:11
spidermonkeyのライセンスってGPLかいな
104デフォルトの名無しさん:2008/01/18(金) 11:38:34
***** BEGIN LICENSE BLOCK *****
Version: MPL 1.1/GPL 2.0/LGPL 2.1
105デフォルトの名無しさん:2008/01/19(土) 22:05:07
Javascriptを勉強しようと思っているのですが、チュートリアル的に使えるオススメのサイトってありますか?
テキストなどを処理するためのスクリプトを書いたり、将来的にはSilverlightでGUIアプリケーションを作りたいと思っていますが、
検索してもHTML埋め込みでの解説ばかりで困っています。
106デフォルトの名無しさん:2008/01/19(土) 22:33:58
埋め込み以外でガチでJSを知りたいならサイ本買えば。
107デフォルトの名無しさん:2008/01/19(土) 22:42:40
まあサイ本だな。
どうしてもWeb上でチュートリアル的なものをというなら
MDCのCore JavaScript 1.5 Guideあたりか。
108デフォルトの名無しさん:2008/01/19(土) 22:43:12
やっぱり定番はオライリーですか……。
Webで気軽に勉強というわけにはいかないみたいですね。
ありがとうございました。
109105,108:2008/01/19(土) 22:46:52
>>107
MDCは求めていたものと少し違いますが、仕様が一覧で見られるだけでも大分わかりやすいです。
しばらくこれを見ながら勉強してみようと思います。
ありがとうございます。
110デフォルトの名無しさん:2008/01/19(土) 23:57:08
ちゃんと言語としてJavaScriptを知るにはO'Reillyの本が一番いいよ。
はっきりいってWebで検索するよりずっと手軽かつわかりやすく効率いい。
111デフォルトの名無しさん:2008/01/20(日) 15:22:59
なあ、全然プログラム解らない俺に教えてくれよ

昔、PC98にはRomBasicが乗ってて、簡単なプログラムとかが直ぐに出来たんだが、
同じ事をしようとして、VBSってのをかじってみたけど、MSはVBSの開発を中止したみたいだし、
で、くだらない質問だけど、バカにしないで教えてください。

Q1)最新のVisualStasio2008には、Jscript8.0ってのがあって、VBSとは違って開発・発展が継続してるようなんだが、
このJscript は、http://msdn2.microsoft.com/ja-jp/library/xkx7dfw1.aspx によるとコンパイルして実行するように書かれていて、
テキストファイルのままコンパイルせずに、 WSH とか ブラウザで気楽に実行できなくなったの?

以下スレ違いだけど、アドバイス頼みます。
Q2)昔のPC98に乗ってたRomBasicみたいに、気楽にどこでも簡単なプログラミングって目的の時は、
JAVAscriptが良いの? 他になにかお勧めはないですか?

Q3)Windows Power Shell ってのを覚えると、上記の目的に合致しますか?

Q4)VisualStasio2008Express のVisualBasic を使えば、VBS見たいにコンパイルしなくても気楽に実行できる、プログラムできますか?
112デフォルトの名無しさん:2008/01/20(日) 15:41:03
>>111

A1. そのとおり。JScript.NETからはコンパイル必要。
A2. 昔のBasicやってんならHSPでもやってみたらどうか。ちょっと頑張ってVBAでもいんじゃね?
A3. PowerShellは結構ありな選択肢だと思うよ。
A4. できません。VBもコンパイル必要。

結果的にスレ違いになるから続きは「くだらない質問はここにスレ」あたりにでも行ってな。
113デフォルトの名無しさん:2008/01/20(日) 15:44:52
>>112
ありがトン
114デフォルトの名無しさん:2008/01/21(月) 01:01:43
javascriptは関数型パラダイムにプロトタイプベースだから気軽には始められないと思うが・・・。
最低限、プロトタイプチェーンとコンテキストチェーン理解してないと言語仕様に付いていけないと思う。

後、勉強ならecmaの言語仕様とサイ本で十分。

まあ、どっちにしろjavascript2.0が出たら皆勉強し直しだしなぁ。
115デフォルトの名無しさん:2008/01/21(月) 21:12:32
関数型的要素は意識する必要ないべ
それに、既に多くの人間が気軽に使っていると思うけど
116111:2008/01/22(火) 18:47:11
親切な方、もう一つ教えてください。
Q4)ECMAScriptを覚えたら、どのWindowsPCでも、計算とか簡単なプログラム作って走らせたりできますか?
何か別にコンパイラとかインタプリタとか入れなくても、ネットカフェとか友人のPCとかでも、Windows標準状態でできますか?
117デフォルトの名無しさん:2008/01/22(火) 19:19:10
>>116
とりあえずWSHやHTAなら大抵のWindowsPCで動くんじゃないか?
118デフォルトの名無しさん:2008/01/22(火) 19:21:09
JScriptとJavaScriptでは変数のスコープの扱いがすこし違うくらいか
119111:2008/01/22(火) 20:08:38
ありがトン
120デフォルトの名無しさん:2008/02/07(木) 04:24:44
web上の文献を読んでいたら、global スコープでの var 宣言がほとんど無意味なように感じたんですが、
global スコープでは var をつけて変数を宣言するのは無意味ですか?
121デフォルトの名無しさん:2008/02/07(木) 04:47:41
処理系にとっては無意味でも人間にとっては意味あるでしょう。
122デフォルトの名無しさん:2008/02/07(木) 12:30:18
var付けないとコンテキストチェーンたどって変数探す処理が含まれるから挙動は違うと思うんだが。
123デフォルトの名無しさん:2008/02/12(火) 09:27:08
win = window.open(...);
win.scrollBy(0,100);

みたいにサブウィンドウを作って、それを親から操作することは出来ないんでしょうか?
124デフォルトの名無しさん:2008/02/12(火) 13:48:58
板違い
125デフォルトの名無しさん:2008/02/15(金) 10:07:18
文字列リテラルで、Unicodeのコードポイントを
"\uXXXX"で指示できるけど、これはBMP内まで?
126デフォルトの名無しさん:2008/02/15(金) 11:52:16
127デフォルトの名無しさん:2008/02/15(金) 17:23:45
>>126
サンクス。
手元の処理系だと、サロゲートペアで処理されてた。
128デフォルトの名無しさん:2008/02/16(土) 23:01:51
"abc123def".search(/[0-9](?=[^0-9])/); // = 5
"abc123def".search(/(?=[^0-9])[0-9]/); // = -1

前者は期待通りですが、後者がマッチしない理由がわかりません。
3 を期待したんですけど。
129128:2008/02/16(土) 23:13:41
ttp://www.kt.rim.or.jp/~kbk/regex/regex.html#POSITIVELOOKAHEAD
むー、(?=〜)は前置できないのか。
130デフォルトの名無しさん:2008/02/24(日) 18:05:38
prototype.js
ってどのへんが便利なの?
131デフォルトの名無しさん:2008/02/24(日) 18:11:13
ES4がなくてもクラスを使える。
132デフォルトの名無しさん:2008/02/26(火) 08:00:08
見た目クラスなだけだろ
133デフォルトの名無しさん:2008/02/26(火) 10:46:22
lispのマクロに相当することってできるの?
134デフォルトの名無しさん:2008/02/26(火) 14:56:25
lips マクロでググッたらキャノンのページ記述言語が出てきたんだが
lipsってあのlipsだよな?マクロなんてあったのか。
135デフォルトの名無しさん:2008/02/26(火) 15:12:32
Nice joke!
136sage:2008/02/26(火) 20:54:00
ものすごい記述方法を発見した!!

Date.call.call("".replace, " TRIM ", /^\s+|\s+$/g, "")
これなにしてるかわかるか!
使おうとは思わないけどすごいね
この記述はもう知られてるの?
137デフォルトの名無しさん:2008/02/26(火) 21:20:07
callってes4でなくなるんじゃなかった?
138デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/02/27(水) 14:23:21
どうすごいの?単なるトリムなんだけど。
140デフォルトの名無しさん:2008/02/27(水) 16:41:48
任意のコンテキストで関数呼んでる。
invokeみたいなもん。
141デフォルトの名無しさん:2008/02/27(水) 19:40:33
[].slice.call(arguments)とかarray.push.apply(array, arguments)とかならたまに見るな。
142sage:2008/02/28(木) 00:58:02
ちょい脱線するけど
[].slice.call(arguments) より Array.apply(arguments) のほうが好き
143sage:2008/02/28(木) 01:00:17
ミスった無駄にスレ消費して恐縮です。
Array.apply(null, arguments) と言いたかった
144デフォルトの名無しさん:2008/02/28(木) 05:58:24
引数の数が1つでその値が数値である、ということが
絶対ないと保障されているならそれでもいいね。
だがその前にsageを覚えろ。
145デフォルトの名無しさん:2008/02/28(木) 06:17:55
別に下げんでもいいよ
荒らしや厨が入ってくるわけでもないし
146デフォルトの名無しさん:2008/02/28(木) 22:28:12
あらしです
147デフォルトの名無しさん:2008/02/29(金) 01:56:46
ムーンサルトり乙
148デフォルトの名無しさん:2008/03/08(土) 13:05:10
>>136
知られてるというか、そういうトリックを理解してないと今時のJSコード読めないお。
↓こんな遊びとか
http://d.hatena.ne.jp/amachang/20060811/1155317697
149デフォルトの名無しさん:2008/03/08(土) 13:07:26
gotoスパゲッティや継続スパゲッティと一緒で理解する必要はないかと。
単なる遊びだから。
150デフォルトの名無しさん:2008/03/08(土) 13:08:56
まあcall.callは有用に使われてるの見た事ないね
151デフォルトの名無しさん:2008/03/08(土) 13:40:31
callee.callerの方が使える。
152デフォルトの名無しさん:2008/03/08(土) 15:19:40
callを覚えたてのやつが誰もがやる遊びだが実用性は皆無
153デフォルトの名無しさん:2008/03/08(土) 18:14:28
再帰で、関数名が変わってもいい様に
arguments.callee.call()にした事はある。
154デフォルトの名無しさん:2008/03/08(土) 18:50:18
バッド・ノウハウの塊だなw
155デフォルトの名無しさん:2008/03/08(土) 19:36:46
俺の知ってるバッドノウハウ
var o = {valueOf:function(){return 0;}};
++o
156デフォルトの名無しさん:2008/03/08(土) 20:32:07
それはバッドノウハウではなく「遊び」のような気が。
157デフォルトの名無しさん:2008/03/08(土) 21:09:24
もうちょっといじればジェネレータだ
158デフォルトの名無しさん:2008/03/09(日) 00:53:48
JavaScriptで、JavaScript処理系は作れるのかな。
159デフォルトの名無しさん:2008/03/09(日) 01:06:10
あるよ。ググッてみて。
160デフォルトの名無しさん:2008/03/09(日) 05:02:10
あるんだ。
柔軟な言語だしな。
161デフォルトの名無しさん:2008/03/09(日) 07:03:00
tamarinが自己完結コンパイラじゃなかったっけ?
162デフォルトの名無しさん:2008/03/09(日) 11:24:14
>>153
そゆときは本体関数の内側にクロージャを書くかな。
初期化や終了処理も追加しやすい。
163デフォルトの名無しさん:2008/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.
http://www.mozilla.org/projects/tamarin/faq.html
164デフォルトの名無しさん:2008/03/09(日) 11:41:50
165デフォルトの名無しさん:2008/03/09(日) 13:29:38
むしろこっち
http://mxr-test.landfill.bugzilla.org/tamarin-central/source/esc/
This directory contains code for an ES4 compiler for tamarin
written in ES4.
166デフォルトの名無しさん:2008/03/13(木) 00:00:18
ecma-262やjavascriptでカリー化ってどうやろう?
数学的に考えてカリー化できればラムダ式使って関数宣言なしに全コード書けると思うんだけど。
167デフォルトの名無しさん:2008/03/13(木) 01:49:57
168デフォルトの名無しさん:2008/03/14(金) 14:34:06
>>167
便利だね
pythonが便利なモジュール沢山あるからそっち行ってしまったけど
c++に慣れている人にはこっちの方が書きやすい
169デフォルトの名無しさん:2008/03/15(土) 11:30:47
カリー化とラムダ式オンリーだと書いてて楽しいじゃないか。
ブックマークレットでも使えるし。

Rhinoのes4実装まだ〜?
170デフォルトの名無しさん:2008/03/15(土) 12:15:36
es4はプロトタイプ言語の特徴を無視してる感じで嫌いなのは俺だけ?
171デフォルトの名無しさん:2008/03/15(土) 13:31:22
俺は好き。
172デフォルトの名無しさん:2008/03/15(土) 14:56:57
>>170
俺も3の方が好きだ。
同じ言語だと思うから嫌いとか思うわけで
もう完全な別言語だと思うといいと思うよ…
173デフォルトの名無しさん:2008/03/15(土) 15:12:23
ECAMScript4はpackageが入ったから、
CPANみたいなのができて大爆発だと思う。
perl6はもちろんruby, pythonも食っちゃうかも。
174デフォルトの名無しさん:2008/03/15(土) 17:22:20
それはないな。

俺もes4より3の方が好き。
es4はプロトタイプである必要性がない。
演算子オーバーロードも要らない。可読性が落ちる。
ライブラリがでかすぎるのも実装するとき問題になると思う。
仕様が巨大すぎてwebでの要求以上のものをやっちまった感があるんだよなぁ。
学習面でも大変だし。

これがデスクトップアプリケーション作るための言語ならこれくらいの仕様で良いんだが・・・。
175デフォルトの名無しさん:2008/03/15(土) 17:50:37
逆に必要ないのはes3にしがみついているプログラマになってきちゃった…
176デフォルトの名無しさん:2008/03/15(土) 21:09:40
HTML5と絡んでWebアプリケーションを作るための言語にしたいんじゃないの。
177デフォルトの名無しさん:2008/03/15(土) 23:13:42
ES3のプロトタイプ指向のシンプルな美しさがES4には無いね。
178デフォルトの名無しさん:2008/03/16(日) 01:12:53
>>117
だからといって、
http://javascript.crockford.com/recommend.html
http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft
これもあんまり。部分的にはいいとこもあるけど、なんかいいかげんで。
179デフォルトの名無しさん:2008/03/16(日) 08:15:31
クラス使いたければJavaのアプレットでも作ってろっての。
JS/ESは言語仕様の無軌道な拡張よりも処理系の実装の改善をしていってほしい。
言語仕様をいじるのは、せめてpythonと比較になるぐらいの速度が出てから。
180デフォルトの名無しさん:2008/03/16(日) 09:24:06
>>164
181デフォルトの名無しさん:2008/03/16(日) 10:33:36
>プログラミング言語について語るときに仕様と実装という区別のついてない人が多すぎる。
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/gauche-night-again
182179:2008/03/16(日) 11:13:41
>>181
実際問題として仕様と実装の区別を間違えているのがes4のstatic typingを始めとする
パフォーマンス向上のための言語仕様拡張でしょ。

それよりも、パフォーマンス向上は実装の問題として扱って、
せめて他のdynamic typingな言語の処理系のパフォーマンス程度にマトモな処理系を
実装/普及させるのが先だろ、というのが>>179の主旨。わかりにくてスマソ。
183デフォルトの名無しさん:2008/03/16(日) 12:35:33
static typingにはsafe programmingというのもあるわけで…
184デフォルトの名無しさん:2008/03/16(日) 13:12:36
消火器を売りつけるようなもんか
185デフォルトの名無しさん:2008/03/16(日) 13:41:02
>>183
ところがJS/ESにstatic typingを導入しようとしている人達は、
static typingをAPIに適用してパフォーマンスを稼いで
ユーザスクリプト側ではdynamic typingのままでいいと言っている。

safe programmingのためならば、ユーザスクリプト側にこそ
static typingが必要だと思うのだがね。
186デフォルトの名無しさん:2008/03/16(日) 13:58:14
動的型言語はコンパイラによるチェックではなくテストケースによる
安全性のチェックを行うという事になっている。そこにコンパイラに
よるチェックを入れた方がより簡単に安全性を増せるよと主張するのは
野暮天。
187デフォルトの名無しさん:2008/03/16(日) 15:45:57
多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
ならんのだから、はじめから型情報入れられるようにした方が楽でないか?
188デフォルトの名無しさん:2008/03/16(日) 18:13:58
>>187
> 多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
> ならんのだから、

え?あるコードで想定している「型」と具体的なクラスは全然別物なのが
dynamic typingのいいところでしょ…
189デフォルトの名無しさん:2008/03/16(日) 18:38:50
そういう意見は全て退けられてes4が出来ましたw
190デフォルトの名無しさん:2008/03/16(日) 18:44:10
そりゃそうだけど、あるコードで想定している「型」が明示されてるなら
具体的なクラスの方は楽できるし。
http://www.ecmascript.org/es4/spec/evolutionary-programming-tutorial.pdf
191デフォルトの名無しさん:2008/03/16(日) 18:55:44
es4は言語思想がes3までと違いすぎて同じ言語として扱う意味がない。
192デフォルトの名無しさん:2008/03/16(日) 19:11:08
ちょうど今パート3だしes4のスレは分岐するか?
193デフォルトの名無しさん:2008/03/16(日) 21:02:38
その前に1000行ったらな
194デフォルトの名無しさん:2008/03/16(日) 21:21:24
>>191
禿同。
195デフォルトの名無しさん:2008/03/16(日) 21:48:11
実は言語思想などはじめから無かったw
196デフォルトの名無しさん:2008/03/16(日) 22:37:08
最初はNetscapeの看板機能になるためだけの言語だったからな。
197デフォルトの名無しさん:2008/03/16(日) 22:52:07
Live Object という名前の時は輝いていた
198デフォルトの名無しさん:2008/03/17(月) 00:40:59
>>196>>197
Live Object はわからないが、古いこと知ってそうだから聞いてみる。
最初っから .prototype スロットって在ったの?
199デフォルトの名無しさん:2008/03/17(月) 01:08:03
>>197
LiveScriptじゃないの?

>>198
手元にあるJSのリファレンス本みると、prototypeはIE4.0、NS3.0からの対応みたいだから、
バージョン的に言うとJavascript1.1からの対応らしい。
最初からあった訳じゃないと思うけど、当時を知らないから正確なところは分かりません。
200デフォルトの名無しさん:2008/03/17(月) 02:45:06
Javascript 1.0になった時点で、
SunのSelfベースの言語になっているはずだけどな。
まだprototypeの機構を全て揃えてなかったのかも。
201デフォルトの名無しさん:2008/03/17(月) 08:42:26
Live Documentのこといってんじゃないの?
202198:2008/03/17(月) 13:15:28
>>199
prototype は Netscape 3.0 からじゃなかったかなーと記憶してたもんで、ありがとう。
んでちょっと調べてみた。

http://web.archive.org/web/19990117060741/home.netscape.com/eng/mozilla/3.0/handbook/javascript/newfunc.htm
Netscape 2 からの変更
http://web.archive.org/web/20000823073137/home.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_m-q.htm#178711
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デフォルトの名無しさん:2008/03/17(月) 13:46:07
>>179>>182
http://mozillalinks.org/wp/2008/03/updated-web-browsers-javascript-benchmarks/
実装も速くなってる、python 並みかは知らないが。
204デフォルトの名無しさん:2008/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が許されるようになった。
205198:2008/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デフォルトの名無しさん:2008/03/20(木) 14:12:30
nn4.0はjs1.3だぞ
207デフォルトの名無しさん:2008/03/20(木) 20:06:48
NN4.0〜4.05 - js1.2
NN4.06〜NN4.xx - js1.3
だと聞いてるんだけど。
http://www.din.or.jp/~hagi3/JavaScript/JSTips/VersionOfJs.htm
とか
208デフォルトの名無しさん:2008/03/23(日) 14:25:10
3月頭にRhino1.7R1が来たけどここであがってないね。
debuggerキーワードが有効になってイテレータ・ジェネレータが使えるようになったけど
SpiderMonkeyでもまだ1.7は浸透してないかな。
なんかPythonぽくなってきたね。
209デフォルトの名無しさん:2008/03/23(日) 16:26:50
>>208
気づいてなかった
letも実装されてるみたいだし
これはいいね
210デフォルトの名無しさん:2008/03/23(日) 21:26:56
次の問いに答えなさい。
new function() {
var window = {window:null};

// ここでGlobalオブジェクトであるwindowを取得しなさい。(10点)
}
灘中学入試問題 2008年度
211デフォルトの名無しさん:2008/03/23(日) 22:04:45
ブラウザの実装は板違い
212デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/03/25(火) 00:16:15
今頃どうしたんだ? 1.7の新しい処理系でも出た?
214デフォルトの名無しさん:2008/03/25(火) 01:01:12
215デフォルトの名無しさん:2008/03/29(土) 02:55:35
greacemonkeyで1.7が動いたらいいなあ
216デフォルトの名無しさん:2008/03/30(日) 07:54:02
>211
そんなの書いたら構文エラーです。
正解は
valueOf();
もしくは
eval.call(null,"this");
他にもあるかもしれません、さすが灘中学
217デフォルトの名無しさん:2008/03/30(日) 10:56:50
板違いが理解できん馬鹿は消えろ
218デフォルトの名無しさん:2008/03/31(月) 00:59:46
eval.call
これはダメだろ?
219デフォルトの名無しさん:2008/03/31(月) 11:22:25
そういう細かいこといいだしたらブラウザの実装はGlobalオブジェクトが複数ある時点で仕様満たしてないとか色々突っ込みどころがある。
220デフォルトの名無しさん:2008/03/31(月) 11:23:21
このスレは細かいところいっていいんじゃない?
221デフォルトの名無しさん:2008/03/31(月) 12:36:31
eval.call(null,'this')はECMA的に言っても駄目だろ。落第。
222デフォルトの名無しさん:2008/03/31(月) 14:19:27
>eval.call(null,'this')
まあこれは力技のひどいコードであることは違いないけど
223デフォルトの名無しさん:2008/03/31(月) 14:41:03
力技とかじゃなくて、それでGlobalとれたらECMA違反
224デフォルトの名無しさん:2008/03/31(月) 16:57:00
>>216
対象がブラウザっぽいのにどっちもIEで動かないので落第です先生。
(function(){ return this })();
225デフォルトの名無しさん:2008/03/31(月) 17:03:04
JScriptはそもそもコンテキスト周りEcma満たしてないよ
226デフォルトの名無しさん:2008/03/31(月) 17:06:04
RhinoはトップレベルコンテキストからGlobalでアクセスすると取れるんだよね。
var foo = new Global();なんてやると・・・
227デフォルトの名無しさん:2008/03/31(月) 21:43:39
>>221
どこがだめなん?
15.1.2.1を読む限りでは直接呼出し以外をエラーとするのは
mayであってmustではないようだけど。
228デフォルトの名無しさん:2008/03/31(月) 23:36:47
10.2.2
229デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/04/03(木) 18:59:10
おまいら、オレの理解を超えた会話はするな。これは命令だ。
231デフォルトの名無しさん:2008/04/03(木) 20:08:48
>>230
理解できる範囲を明示してくだしあ><
232デフォルトの名無しさん:2008/04/03(木) 20:21:44
print('hello, world');
233デフォルトの名無しさん:2008/04/03(木) 22:03:06
>>230
その命令は、どのコンテキストで実行する?
234デフォルトの名無しさん:2008/04/03(木) 22:13:58
ここじゃね?
eval.call(null, 'this');
235デフォルトの名無しさん:2008/04/10(木) 21:32:53
正直1.6以降ついて行けませんってのどれくらい居る?
236デフォルトの名無しさん:2008/04/11(金) 15:38:09
ECMAScript 1.6 ですか?
237デフォルトの名無しさん:2008/04/11(金) 20:06:42
ついていけないっつーか、
いつになったら新しい機能を使ってもいいか
タイミングをはかりかねている。
238デフォルトの名無しさん:2008/04/11(金) 20:26:02
ローカルならいいけど、
やっぱ公になってるWebでは使えないよな。
あと3年くらい?
239デフォルトの名無しさん:2008/04/12(土) 03:20:12
最長一年半じゃない?
ブラウザをアップデイトしない選択肢はないから。
240デフォルトの名無しさん:2008/04/12(土) 07:31:57
>>239
いや、結構古いまま使ってる人多いよ。
241デフォルトの名無しさん:2008/04/12(土) 10:19:39
うちのアクセスログ、今でもIE5とかある。
242デフォルトの名無しさん:2008/04/12(土) 11:53:15
>>241
NS4.7とか言うのもまだあったりするからなぁ
243デフォルトの名無しさん:2008/04/12(土) 11:55:04
IEなんて2のころからまともに使ったことないが
シェルに食い込んでるからバージョンアップだけはやってるな。
244デフォルトの名無しさん:2008/04/12(土) 18:02:45
マルチプラットフォームに使えるgeckoとwebkitとoperaだけ確認しておけばok。
245デフォルトの名無しさん:2008/04/12(土) 18:15:22
IEはどのみちJavaScript動かないしね。
246デフォルトの名無しさん:2008/04/12(土) 20:37:03
JScriptってコンテキスト周りでecmaすら満たしてなかった気がするが
247デフォルトの名無しさん:2008/05/07(水) 20:28:36
es4はどうよ?
俺は正直イラネ
248デフォルトの名無しさん:2008/05/07(水) 21:41:59
ActionScript同様に扱える予定なんだろ、方向性自体は悪くないんじゃね?
まあ現物見てみないとアレだが、長い目で期待してるよ
どうせIEでも使える日は当面来ない
249デフォルトの名無しさん:2008/05/07(水) 23:35:02
>>247
別の言語だと思ってるので遠くから見てる。
>>248 も言ってるようにWebで使いものになるのは当分先だろう…
250デフォルトの名無しさん:2008/05/08(木) 06:15:58
es3のほうが言語として美しい。es4はキメラ化した愚作。
251デフォルトの名無しさん:2008/05/08(木) 17:37:52
確かに言語としてはes3の方が美しいよな。
クラスベースにしたのにプロトタイプのこすとかイラネ。
まあIEがまともに実装することは永久にないのでwebでは日の目見ないだろうな。
標準クラスライブラリが多すぎるのも問題だ。
252デフォルトの名無しさん:2008/05/08(木) 18:12:50
とはいえprototype.jsとか使って疑似クラスとか定義しているのが主流なのを見ると、
言語の機能としてクラスベースを取り入れるのも正しい方向性っちゃそうなのかもしれない。
既存のクラスをprototypeで拡張できなくなるのはちょっと寂しいけどな。
253デフォルトの名無しさん:2008/05/08(木) 18:25:13
prototype.jsって別にいらないと思うんだがそんなにプロトタイプベースは嫌いかね?
254デフォルトの名無しさん:2008/05/08(木) 18:39:39
今のところ既存のクラスをprototypeで拡張出来るはずだが。

es4 は今がりがり仕様を削ってるところなので様子見。
es3.1 がちっとづつ進んでて興味深い(MS主導)
255デフォルトの名無しさん:2008/05/08(木) 20:23:02
>>253
俺もprototype.jsは嫌い。
つーか、マトモな感覚してたらあんなwarning出まくりのライブラリなんて気味悪くて使えん。
256デフォルトの名無しさん:2008/05/09(金) 01:10:40
そのマトモな感覚ってのがecmaの仕様理解しててプロトタイプベースも使いこなしてるって事だから
実際にajaxアプリ書いてる連中には居ないだろうな。
257デフォルトの名無しさん:2008/05/11(日) 04:26:31
このスレ見て俺ってまだ勉強不足なんだなって思ったよ
ああ・・・
258デフォルトの名無しさん:2008/05/13(火) 13:49:16
似非クラスベースやりたいだけならprototype.jsなしでも
継承モデルとか作れなくもないしな
カプセル化の面で多少悩みは残るけど

でもjQueryは手放せない
259デフォルトの名無しさん:2008/05/13(火) 13:56:49
継承させる場合はFunction.apply()使えば良いけどミックスインしか出来ないんだよな。
260デフォルトの名無しさん:2008/05/14(水) 09:11:18
Yahoo UIってどうよ
めちゃくちゃメソッド・プロパティあるけど
261デフォルトの名無しさん:2008/05/14(水) 11:57:47
ecma-262関係ないな。
262デフォルトの名無しさん:2008/06/19(木) 16:14:32
fx3がリリースされてjs1.8が登場したわけだが・・・rhinoはまだか!?
263デフォルトの名無しさん:2008/06/19(木) 20:20:40
1.8以前に1.7R2がまだ…
ttp://blog.norrisboyd.com/search/label/rhino
264デフォルトの名無しさん:2008/06/19(木) 22:08:11
SpiderMonkey の 1.8 が出てからじゃない?そうでないと仕様確定できないとか?
Fx 3.0.* が結構出てからでしょ。

http://developer.mozilla.org/en/docs/New_in_JavaScript_1.8
もまだいまいち、JSON, Slice Syntax は js には入ってないし、
https://bugzilla.mozilla.org/show_bug.cgi?id=404734
が入ってない。
265sage:2008/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デフォルトの名無しさん:2008/06/29(日) 23:43:48
まだ文法パースすら出来てないんじゃない?
RIもそんな感じだし。
267デフォルトの名無しさん:2008/06/30(月) 00:03:49
文法ころころ細かく変わってるからおかしくなるのは仕方ないんだけど、
数値まわりは lexer がおかしいのかも。
RI-M2 で function test2d {...} とやったらエラー出たのはびっくりした。
(2d で数値リテラルと解釈したらしい、なんじゃそら)
268デフォルトの名無しさん:2008/06/30(月) 15:03:08
>>267
function test2d() { ... }
じゃないんですか。
269デフォルトの名無しさん:2008/06/30(月) 17:32:35
>>268
typo った。スマン
270デフォルトの名無しさん:2008/07/06(日) 23:17:16
無名関数を #(x,y)と書く処理系があったのですが、他でも同じように書いて動くのでしょうか?
271デフォルトの名無しさん:2008/07/06(日) 23:24:58
初めて聞いたkwsk
272デフォルトの名無しさん:2008/07/07(月) 13:13:42
右シフト演算子、「符号ありが >> で、符号なしが >>>」に
決めたのはなぜだろう。
「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
しっくり行くのに。っつーかそう誤解してた。
更に、逆に解説してるサイトもある。
273デフォルトの名無しさん:2008/07/07(月) 13:56:35
>>272
符号の分をさらにシフトすると何がうれしいんだい?
274デフォルトの名無しさん:2008/07/07(月) 14:13:07
>>273
質問の意図がよく判らないけど、
負の数を負のまま扱えるから嬉しい。
算術シフトの名の通り。
275デフォルトの名無しさん:2008/07/07(月) 14:25:28
>>274
負の数のまま扱いたければ、普通に算術シフトを使う処理系で>>すればいいだけ。
何かカンチガイしてないか?
276デフォルトの名無しさん:2008/07/07(月) 15:20:24
よく判らんなー。
元々は>>272の「>>と>>>を誤解してる人がいる」って話なのに、
>>273が「何がうれしい」と謎の質問をしてるのが、こじれの発端だ。
嬉しい/嬉しくないっていう評価軸の話は元の質問には無関係。
>>275も何か変な事を言ってる。
算術右シフトも論理右シフトも、ECMAScriptの話であって、
「そういう処理系で」って話は、どう飛躍してるんだ。
277272:2008/07/07(月) 15:26:46
何か話がややこしく(?)なった様で申し訳ない。
>>273
ビット操作物を書いてる時に、論理シフトを期待して>>を使ったら
MSB=1の時に意図しない動作をしたのが発見の経緯だったので、
「符号をシフトされて(私個人が)嬉しくなかった」という話。
で、>>と>>>を今の様に割り振った理由を知りたいな、と。
278デフォルトの名無しさん:2008/07/07(月) 15:58:02
別に理由なんかないと思うがな。最初にそう決めたからそうなんだろう。
数学で足し算の記号に「+」を割り振ったのはなぜか?
とかいわれてもそう定義したからとしか言いようがなくね?
279デフォルトの名無しさん:2008/07/07(月) 16:46:53
単に慣例に従っただけってのが大きいと思うよ http://d.hatena.ne.jp/ryocotan/20070929/p1
280デフォルトの名無しさん:2008/07/07(月) 17:43:26
前例があるんじゃ、そりゃ従うわ。
でも>>272
>「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
>しっくり行くのに。
はよく判る。
で、>>273は何を訊きたかったんだろう?
281デフォルトの名無しさん:2008/07/07(月) 17:46:03
単に茶々入れたかっただけだと思うけどな
282デフォルトの名無しさん:2008/07/07(月) 18:01:01
Number型は符号付きだから、
>>が算術シフトで、>>>が論理シフトである方が自然。
C言語でのsigned int + >>の多くの実装(ただし仕様的には未定義動作)と合致してる。
283デフォルトの名無しさん:2008/07/07(月) 18:38:19
たぶんECMAScriptが慣例にあわせてるってのはわかってて聞いてるんだと思うんだけど…

数値型に対する演算子なんだから算術シフトの方が自然な動作で
論理シフトの方が例外的な振る舞いだよな…
「符号の分を更に…」って感覚はちょっとわからないな…
シフトしてるビット数は算術のほうが少ないわけだし
284283:2008/07/07(月) 19:18:50
なんか違うなw
シフトしてるビット数は同じで、「最上位ビットを0にする」っていう処理が
追加されたのが論理シフトなんだから「符号の分を更に…」って感覚は
よくわからんと言いたかった。
285デフォルトの名無しさん:2008/07/07(月) 19:33:44
>>280
いや、MSBを保存することを「更にシフトする」という言い方では普通は理解不能だろ。
俺もわからんかった。普通の算術シフトの後にもう1回シフトするのかと思ったよ。
286デフォルトの名無しさん:2008/07/07(月) 19:50:15
>>284
わざわざ「最上位ビットを0にする」って訳じゃない。
左シフトだって、別に最下位ビットを0に「する」んじゃない。

アセンブラ経験者だと判ってくれるかな。
シフトは、左、右、算術右で、
論理型がデフォ、算術は敢えて明示するみたいな。
287デフォルトの名無しさん:2008/07/08(火) 00:07:50
間違った自分はバカじゃないと同意してほしいわけですね、わかります。
288デフォルトの名無しさん:2008/07/08(火) 03:22:22
結局、なんで「さらにシフトする」なんて言ったのか、ワケワカランと思うのは俺だけか?
自称よくわかった人が複数いるみたいだからw、教えてよ。
算術シフトのどこがどう「さらにシフトする」ことになるのか。
289デフォルトの名無しさん:2008/07/08(火) 08:10:19
「更にシフト」じゃなく、「更にひと手間」だな。
290デフォルトの名無しさん:2008/07/08(火) 09:07:18
更にひと手間つーか、MSBをイジらないだけじゃん。全然手間じゃないよ。
291デフォルトの名無しさん:2008/07/08(火) 10:17:28
元の奴の感覚は判るが、言葉が悪い。

動作で<<と(空き位置に0が入るという)対称性があるのは>>>だが、
見た目の対称性は<<と>>だから、違和感がある。

と書けばよかった。
292デフォルトの名無しさん:2008/07/08(火) 10:17:37
符号「拡張」っていうくらいで、
nビット(n>1)シフトする時は、
上位nビットに補填するけどな。
(いまどき1ビットづつシフトしない)
293デフォルトの名無しさん:2008/07/08(火) 10:20:01
>>291
無理やり論理演算の視点になってるよ。
*2, /2だという算術演算の視点なら逆だ。

プログラマは暗黙の仮定に拘泥してはならない。
294デフォルトの名無しさん:2008/07/08(火) 13:46:11
>>293
無理やりも何も、シフトは論理演算でしょ。
295デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/07/08(火) 14:02:04
>>293
なまじ*2、/2の代用になってるからなー。
っつーか、この発想こそアセンブラだ。
なのにアセンブラ的発想は少数派になってる不思議。
297デフォルトの名無しさん:2008/07/08(火) 14:22:08
C/C++みたいにbit長も内部表現も仮定しない仕様を持つ言語の「仕様を」知っ
ている人と、Java,Javascriptのようにbit長規定、内部表現も暗に仮定し
ている言語しか知らない人では、かなり温度差があるんじゃないでしょうかね。
前者は、言語習得時に仕様を確認する習慣があると思います。仕様を確かめな
い感覚派は、アセンブラ知っていればこう考えるはずと、自分の感覚に陥って
しまうんじゃないでしょうか。
298デフォルトの名無しさん:2008/07/08(火) 15:15:53
ビット演算で32ビットに丸められるのは、レジスタ幅等の効率の面から判るんだけど、
整数リテラルの±2^53って、どういう根拠なんだろう。
IEEE754の64ビット表現だと、仮数部は52ビットだし。
299デフォルトの名無しさん:2008/07/08(火) 16:08:22
仮数部52ビットの上に、見えない1が立ってるからでは?
300デフォルトの名無しさん:2008/07/08(火) 16:32:06
本当にアセンブリ言語を知ってる人ならば符号付き演算と符号無し演算に最低限の注意は向けるはずです。
変な思い込みで符号に注意を向けない人は、生兵法でアセンブリを使っている人でしょう。
301デフォルトの名無しさん:2008/07/08(火) 17:15:40
>>299
あーそっか。俺バカ。
302デフォルトの名無しさん:2008/07/08(火) 17:16:55
>>300
最初のネタに戻ると、間違えて逆に解説してる本やサイトがある。
303デフォルトの名無しさん:2008/07/08(火) 22:35:02
そりゃ注意はしてても、まさか演算子の動作を逆に解説してるとは思わないよな。
複雑な関数やバグの確認ならともかく、演算子を事前にテストしてから使う様な事はしないし。
304デフォルトの名無しさん:2008/07/08(火) 23:38:29
Webのクソみたいな解説サイトとかあてにしてたらダメだろ
書籍で間違った解説してるものがあるなら被害者を減らすためにも書名を晒すべき
305デフォルトの名無しさん:2008/07/08(火) 23:45:52
今なら乗除はコンパイラ任せの*/で良いね。シフトはunsignedだけで良いんじゃね?

306デフォルトの名無しさん:2008/07/08(火) 23:49:18
コンパイラの意義は抽象化にあるんだから、
シフトはビット操作にだけ使うべきでしょ。
符号の有無じゃなく。
307デフォルトの名無しさん:2008/07/08(火) 23:58:03
My UNIX Series 『入門 JavaScript』、久野靖、アスキー
P.43
■2項演算子
〜(中略)〜
 ●<<、>>、>>>
  左シフト、右シフト、算術右シフト。

奥付では初版。
以降の版で直ってるかは不明。
308デフォルトの名無しさん:2008/07/09(水) 00:27:41
まさかだけど、==と===みたいに
途中で意味が入れ替わった訳じゃないよね?
309デフォルトの名無しさん:2008/07/09(水) 09:58:00
あれは痛かったなw
310デフォルトの名無しさん:2008/07/09(水) 10:27:43
>>308
revision 1の仕様書を読んだが、
The left shift operator ( << )
The signe3d right shift operator( >> )
The unsigned right shift operator( >>> )
というわけで、変わってはいないようだな。
久野さんにしては珍しいチョンボだね。
311デフォルトの名無しさん:2008/07/09(水) 12:04:33
久野さんって、fjでお馴染みの、
高校の情報の教科書を書いてたりする人?
312デフォルトの名無しさん:2008/07/09(水) 13:15:28
fjナツカシスw
313デフォルトの名無しさん:2008/07/10(木) 18:53:58
ES4では、byte型、int型, uint型が増えますが、
shift演算子の意味はES3のままのようですね。
少なくともtamarinでは、今のところそう実装されています。
314デフォルトの名無しさん:2008/07/10(木) 19:25:44
だからなに?
315デフォルトの名無しさん:2008/07/10(木) 19:46:11
つ お知らせ
316デフォルトの名無しさん:2008/07/10(木) 23:54:34
random seed ってないのね。
まったく同じ乱数列をもう一度再現したいんだけど、
自前でそういう乱数を持つしかないか。

そういや、seed を2回設定すると
副作用で時刻が得られる言語があったよね。
317デフォルトの名無しさん:2008/07/11(金) 00:48:57
>>313
> ES4では、byte型、int型, uint型が増えますが、
byte 型は×
http://bugs.ecmascript.org/ticket/234
https://mail.mozilla.org/pipermail/es4-discuss/2008-March/002547.html
int, uint 型も多分×
http://bugs.ecmascript.org/ticket/371
AS(Tamarin) は独自拡張として残すんだろう、多分。
318デフォルトの名無しさん:2008/07/11(金) 10:01:48
tamarinは、ES4モードじゃなくてASモードの時だけ
既存のint, uintを有効にするんじゃないかな。
ES4のint, uint除外は最近のことなので、
// lib-march-2008に関連ドキュメントも至急削除のコメント
tamarinはまだ追いついてないと思う。
319デフォルトの名無しさん:2008/07/11(金) 10:20:45
>>316
awkだ。
srandすると、現在時刻がseedになる。
もう一度srandすると、前のseedを返す。
320デフォルトの名無しさん:2008/07/11(金) 12:37:48
仕様変更しすぎだな
321デフォルトの名無しさん:2008/07/12(土) 00:01:36
Number型、桁あふれで内部で勝手にfloat, doubleに昇格されると、
疑似乱数生成のアルゴリズム実装に神経使うよなあ。
322デフォルトの名無しさん:2008/07/17(木) 03:24:05
var a() = function
{
this.b = function() {}
}

を、prototypeを使って書き直す場合、どうやって書けば良いのでしょうか?
323デフォルトの名無しさん:2008/07/17(木) 03:29:37
なんだそりゃ

var a = function() { };
a.prototype = {
  b: function() { }
};
324デフォルトの名無しさん:2008/07/17(木) 14:29:38
>>322
一応言っとくが>>322>>323のコードは等価じゃないぞ。
325デフォルトの名無しさん:2008/07/17(木) 18:07:23
誰が等価なコードを望んだんだろう
326デフォルトの名無しさん:2008/07/18(金) 05:17:50
aを実行しちゃっててわろた
327デフォルトの名無しさん:2008/07/29(火) 14:56:37
var o = new Object();
o.f = function() {
 return; // 内容は何でもいい
} // ←ここにセミコロン
(function() {
 void 0; // 内容は何でもいい
})();

このままだとエラーで、o.f に代入する関数リテラルの最後にセミコロンを付けると問題ない。
ここは暗黙で文の区切りにならない?
328デフォルトの名無しさん:2008/07/29(火) 16:47:10
ならないからエラーになるんじゃないかな。
とりあえず{}かfuncton() {...}に対する関数呼び出しとして扱われてるはず
329デフォルトの名無しさん:2008/07/29(火) 19:35:26
暗黙な 文の区切りなんて obsolete ね いつか動かないはずのコード
330デフォルトの名無しさん:2008/07/30(水) 01:43:38
というか仕様書読み直して来い
どの識別子が終端文字とみなされるか調べて来い
331デフォルトの名無しさん:2008/08/04(月) 16:05:45
>>321
uintは欲しかったな。
ハッシュ計算、疑似乱数、ビット演算用に。
ブラウザ専用言語だと需要が少ないところだろうが。
332デフォルトの名無しさん:2008/08/04(月) 23:46:54
es4は組み込み言語としての汎用性を求めてなかったっけ?
333デフォルトの名無しさん:2008/08/05(火) 00:46:57
331だが、ちょっと調べてみると、
JITで型推論するからNumberあれば十分という戦略らしい。
少なくともtamarinはその方向みたいだ。
そりゃmodulo演算してれば、整数型なことが分かるけどなあ…
334デフォルトの名無しさん:2008/08/05(火) 04:35:05
>>333
え、型推論をコンパイル時ではなくJITでやるのか・・・ある意味すげーな、それ。
一般の型推論は理論上NP完全だぞ。実際にはそこまで最悪なケースは滅多にないけど。
335デフォルトの名無しさん:2008/08/05(火) 21:42:36
>一般の型推論は理論上NP完全
VMが型推論のパターンを学習すればいいんだ!
336デフォルトの名無しさん:2008/08/05(火) 22:24:16
「できる」と「簡単にできる」は別物だろ
自分とこの処理系ならできるからいいって言われても…
337デフォルトの名無しさん:2008/08/17(日) 08:30:22
338デフォルトの名無しさん:2008/08/19(火) 09:42:55
ECMAScriptHarmony - ECMAScript Harmony
http://www.hyuki.com/yukiwiki/wiki.cgi?ECMAScriptHarmony
339デフォルトの名無しさん:2008/08/19(火) 11:56:26
ES4あぼん、か。
340デフォルトの名無しさん:2008/08/19(火) 12:27:53
>>339
packageがなくなるのも確定か…
packageだけは欲しかったのに
early binding, namespaceがなくなるのはいいんだが
341デフォルトの名無しさん:2008/08/19(火) 23:55:05
ES ed.4がなくなってES ed.3.1を作るってこと?
まあ無難だがモジュール性の確保がなぁ。
342デフォルトの名無しさん:2008/08/19(火) 23:59:08
プロトタイプベースOOP派の勝利だな。
343デフォルトの名無しさん:2008/08/20(水) 02:37:40
>>341
4はなくなるわけじゃない。将来の候補の一つ。
大きく変える前に3.1を出して様子見。
MicrosoftとしてはActionscript牽制に成功。
344デフォルトの名無しさん:2008/08/20(水) 02:50:29
>>342
それはまだこれからの協議。

package, early binding, namespaceがなくなること決定らしいが、
これは全く意味が分からない。
言語的にライブラリ管理補佐機構が大きく後退。
Ajaxに暗雲垂れ込める感じ。

345デフォルトの名無しさん:2008/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 抜きだと面倒そうなんだよなぁ
346345:2008/08/20(水) 18:23:47
> Dojo で採用されているような構文で検討中。
間違えた、ES-ML で出てるのは Helma NG と Caja だった。
http://dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/
http://google-caja.googlecode.com/svn/trunk/doc/html/cajaModuleSystem/index.html

まぁ議論のベースになってるのはこれ。
http://wiki.ecmascript.org/doku.php?id=proposals:modules
347デフォルトの名無しさん:2008/08/23(土) 23:22:37
es4にはwktkがない!何故だ!?
348デフォルトの名無しさん:2008/08/24(日) 11:38:18
公式に終わってんだからあっても困る、ES3.1 は?
349デフォルトの名無しさん:2008/08/24(日) 12:19:00
型指定変数宣言

var hoge:Number;

も無くなったの?
350デフォルトの名無しさん:2008/08/24(日) 14:12:33
それは困るなぁ
351デフォルトの名無しさん:2008/08/24(日) 16:57:42
型周りは一からやりなおし。どうなるかわからんが素案には
http://wiki.ecmascript.org/doku.php?id=harmony:types
> A type annotation has the syntax " : type-expression ".
とあるがな。
352デフォルトの名無しさん:2008/08/25(月) 19:37:51
ECMAScript デス 3

らぶ デス 3に見えたメガネ買い替えてくる・・・。
353デフォルトの名無しさん:2008/08/25(月) 20:01:58
メガネより変えるべきものがあるだろ
354デフォルトの名無しさん:2008/08/25(月) 20:57:29
>>353
替えの入手先の問題が。メガネは店で売ってるが。
355デフォルトの名無しさん:2008/08/25(月) 21:41:59
>>354
脳へ渡す情報なら幾らでも買えるが人生は売ってないからね。
356デフォルトの名無しさん:2008/08/26(火) 08:17:51
死ねば負債は清算できるぜ
ES4は修正して継続するようだが。
357デフォルトの名無しさん:2008/08/26(火) 08:23:20
へ?ES4は一旦清算するんでしょ?
やりたきゃES3.1ハーモニーの後にしろと。
358デフォルトの名無しさん:2008/08/26(火) 08:34:14
359デフォルトの名無しさん:2008/09/03(水) 14:58:15
おまいら的には Chrome よりコッチだよな
ttp://code.google.com/p/v8/
360デフォルトの名無しさん:2008/09/03(水) 15:39:27
もうJITしていられんな
361デフォルトの名無しさん:2008/09/03(水) 19:48:00
V8 はコンパイラオンリーな実装なんだね。
これも JIT に入るのかな。
362デフォルトの名無しさん:2008/09/03(水) 21:38:11
コードざっと見たけども「V8で(だけ)速く動く」書き方がありそうなんだよ
google提供のjavascript(mapsなんか)はそう書き直されるんじゃなかろうか

いわゆるひとつの非関税障壁になりそうな予感
363デフォルトの名無しさん:2008/09/03(水) 21:58:32
ARMあたりに対応してるからそのうちアンドロイドに組み込まれるんじゃないかと
364デフォルトの名無しさん:2008/09/04(木) 00:32:47
>>362
そんなものがない実装なんてないよ。
365デフォルトの名無しさん:2008/09/04(木) 03:40:08
>>362
その懸念はありかもね
他インプリもgoogleのjavascriptを基準に最適化しはじめたりしてね
アホすぎるが
366デフォルトの名無しさん:2008/09/04(木) 10:29:19
ようするに方言が増えて、移植性の壁が高くなっただけだな。
367デフォルトの名無しさん:2008/09/04(木) 11:07:56
修正BSDだから他も全てV8エンジンベースになるんじゃねーの
これだけ速度の違いを見せつけられるとね
368デフォルトの名無しさん:2008/09/04(木) 11:20:04
IEはならない。
firefoxもtamarinがあるし、XULを考えると差し換えはかなりの大作業。
369デフォルトの名無しさん:2008/09/04(木) 19:49:13
Rhinoはもとから十分早いし。
370デフォルトの名無しさん:2008/09/04(木) 23:53:41
>>368
firefox に tamarin が入る目はもはやほとんどないよ
tamarin jit だけ移植して終わり
371デフォルトの名無しさん:2008/09/05(金) 00:27:30
ホント、タマリンはこれからどうするんだろね
372デフォルトの名無しさん:2008/09/05(金) 01:47:29
MLでそんな議論になってる?
373デフォルトの名無しさん:2008/09/05(金) 21:01:13
超超初歩の質問です

document.write("hogehoge");
document.clear();

と書いても、clearを無視されてhogehogeと表示されます。
document内容を動的に消去したいです
374デフォルトの名無しさん:2008/09/05(金) 21:22:59
document.open();
375デフォルトの名無しさん:2008/09/08(月) 13:07:23
>>370-372
> The project was canceled mainly because tamarin-tracing never caught
> up to SpiderMonkey's speed. Tamarin-tracing also would have needed
> a lot of other features to be useful on the web:
https://wiki.mozilla.org/JavaScript:ActionMonkey
(13:32, 4 September 2008 変更)
ML にもアナウンスはなかったと思う
376デフォルトの名無しさん:2008/09/08(月) 21:00:24
tamarin自体を放棄ってことかい
こりゃtamarin
377デフォルトの名無しさん:2008/09/08(月) 23:22:51
chrome/JSv8の影響かな?
378デフォルトの名無しさん:2008/09/09(火) 00:03:54
TraceMonkeyに吸収合併じゃねえの?
379デフォルトの名無しさん:2008/09/09(火) 00:10:46
Adobeカワイソス
380デフォルトの名無しさん:2008/09/09(火) 00:19:04
今のとこ >>370 のとおり Tamarin-tracing の nanojit のみ
TraceMonkey(SpidirMonkey + nanojit) に入れてるだけ。
Adobe が使うから Tamarin-central と Tamarin-tracing の開発は続いてる。

しばらく前に DOM の GC に MMgc(Tamarin の GC) を使うか
jemalloc 利用した GC 作るかって話があったんだが、結論がどうなったか
よくわからん、後者っぽいんだけど…
381デフォルトの名無しさん:2008/09/09(火) 00:31:18
>>378
コードとアイデアを Tamarin-Tracing プロジェクトと共有してるっぽい?
英語つよいひと だれか たすけて

> It is based on a technique developed at UC Irvine
> called "trace trees", and building on code and ideas
> shared with the Tamarin Tracing project.
http://wiki.mozilla.org/JavaScript:TraceMonkey
382デフォルトの名無しさん:2008/09/09(火) 02:31:35
そう。

"trace trees"ってのは、
コード列を木構造にして、JIT対象単位とする手法。
383190.90.128.210.bf.2iij.net :2008/09/10(水) 14:45:40
>>346
>> まぁ議論のベースになってるのはこれ。
>> http://wiki.ecmascript.org/doku.php?id=proposals:modules

> | ModuleName '.' '*' 'as' Ident '*' # all with prefix

こんなの入れるくらいなら、階層を持つモジュール名をprefixにして、
参照できるようにしてくれよ!
384190.90.128.210.bf.2iij.net :2008/09/10(水) 17:15:45
v8のソース、10万行ありますね。
385p31195-adsau15honb9-acca.tokyo.ocn.ne.jp :2008/09/10(水) 20:39:48
tamarinが15万行ぐらいだし普通じゃね?
386デフォルトの名無しさん:2008/09/10(水) 21:53:29
なんでfusianasanなの?
387385:2008/09/10(水) 22:02:18
2chの仕様変更?とnavi2chのバグのあわせ技でした
>>383-384 も同じかも
388デフォルトの名無しさん:2008/09/10(水) 23:27:11
それはすごいSGだなw
389デフォルトの名無しさん:2008/09/10(水) 23:29:27
>>387
どこ行けば判る? > 仕様変更
390デフォルトの名無しさん:2008/09/10(水) 23:30:53
ごめん、>>389は無視して。
navi2chのスレと間違えた。
391デフォルトの名無しさん:2008/09/16(火) 22:41:27
js1.9とes3.1はまだかーーー
392デフォルトの名無しさん:2008/09/20(土) 10:23:21
ttp://webkit.org/blog/214/introducing-squirrelfish-extreme/
みんないったい何に追われているのか、この何ヶ月、必死すぎ。
この元気があれば ES4 だって Harmony だって物凄い勢いで実装済みそうだぜ
393デフォルトの名無しさん:2008/09/20(土) 10:53:49
だって、システムソフトウェアでのかつてのCのように、
Javascript/ECMAScriptがUIの世界を支配しそうだから。
394デフォルトの名無しさん:2008/09/20(土) 11:52:22
MacがWindowsを駆逐しそうだしな
395デフォルトの名無しさん:2008/09/20(土) 19:31:19
>>394
マジで!?
396デフォルトの名無しさん:2008/09/20(土) 21:05:28
インタプリタの最終進化まで行きそうだ
397デフォルトの名無しさん:2008/09/21(日) 19:16:30
最初からJavaバイトコード吐いてJavaVMに最適化丸投げ出来るRhinoは楽だな。
deoptimize実装してないVMだと動的プロパティは相性悪そうだが。
398デフォルトの名無しさん:2008/09/22(月) 23:10:53
SquirrelFish Extremeが早いらしいね。
リッチコンテンツ使うからどこも必死か。
399デフォルトの名無しさん:2008/09/25(木) 18:06:04
> ECMAScript Harmony
> Plus, as some JS implementors have noted with concern, multiple open
> namespaces impose runtime cost unless an implementation works
> significantly harder.

これってどこかに具体的な議論ある?

ES4のNamespaceが1st class objectというのはやりすぎだとは思うが、
ほとんど何もできないObjectだから問題が起きそうにもない。
もしかしてName objekutの方で、属するNamespace(qualifier属性)が
immutableになってないことが問題になっているんだろうか。
400デフォルトの名無しさん:2008/09/25(木) 23:05:10
>>399
> これってどこかに具体的な議論ある?
ES4-ML で実装が面倒ってのは何度も出てたけど、これは覚えがない。

> もしかしてName objekutの方で、属するNamespace(qualifier属性)が
> immutableになってないことが問題になっているんだろうか。
そうだと思う。
DOM で
script = document.createElement('script');
...appendChild(script);
のように動的に namespace object を持つスクリプトがロードされたとき、
読み込み元のスクリプトの無修飾の name を読み込まれたものと
衝突しないように、qualifier 属性を再構築しなきゃならなくなる
ということでないかな。
401デフォルトの名無しさん:2008/09/26(金) 00:30:10
文字列と整数の掛け算できるようになった?
402デフォルトの名無しさん:2008/09/26(金) 14:00:07
>>400
え、DOMの名前空間とJavaScriptの名前空間が一緒になるってこと?
じゃないよね?
403デフォルトの名無しさん:2008/09/26(金) 15:34:57
>>402
ちがうちがう。ES4 の import とかだけ使うなら問題はないんだろうけど、
legacy な DOM を介する動的ロードするとコストが増加するってこと。
互換性のことがあるから、切るわけにもいかんのでしょ。
404399:2008/10/01(水) 17:37:31
>>400
返事遅れました。調べてもやっぱりよくわかりませんなあ。
そういう"intern"がmission criticalなコードってそうないだろうし。

少なくとも、
>>346
> まぁ議論のベースになってるのはこれ。
> http://wiki.ecmascript.org/doku.php?id=proposals:modules

この案だって、1st class objectでないもののnamespaceはあるわけで、
Brendan Eichが、http://ejohn.org/blog/ecmascript-harmony/で改めて

> However, as I noted in my message to the lists,
> namespaces, packages, and early binding are definitely gone.

こう言いきっている意味は分からないな。
namespaceの全くないmoduleなんてありえないもの。

企業の思惑が絡んでくると、分けの分からない議論になるなあ。
ただ、かなり熱い"harmony"だったことは伝わってくるね。
405デフォルトの名無しさん:2008/10/01(水) 23:34:06
> こう言いきっている意味は分からないな。
http://wiki.ecmascript.org/doku.php?id=proposals:modules
harmony になる前に出された提案(というよりスケッチ)なんで
namespace が残ってる、という単純な話かも。

proposals:modules は macro の言及があるように元々 after ES4 の
ためのものだった。「議論のベース」って言ったのはまずかった、すまん。
いいとこ参照先だ。

> namespaceの全くないmoduleなんてありえないもの。
ES4 のメカニズムにおける namespace がないってことでしょう。

一般的な意味での namespace(パッケージシステム?) をどうするのか
まだ見えないけども、内部構造に namespace を持たない形じゃぁ
ないのかなと思ってる(AST になる段階で namespace が消える)
406デフォルトの名無しさん:2008/10/02(木) 13:54:13
というかnamespaceのないmoduleなんてありえないよ。

FOLDOCより
namespace
A set of names in which all names are unique.

namespaceなしじゃmoduleローカルな識別子も定義できないよ。
namespaceオブジェクトとなると行きすぎだろうけど。
407デフォルトの名無しさん:2008/10/02(木) 14:41:46
>>406
そんなのcoding conventionでmodule nameをprefixとして使うとか、どうにでもできる。
408デフォルトの名無しさん:2008/10/02(木) 14:49:45
elispかよw
409デフォルトの名無しさん:2008/10/02(木) 18:00:02
オブジェクトを名前空間として流用する風習はあるのだから
「Rubyかよ」の方が適切じゃないかね
410デフォルトの名無しさん:2008/10/02(木) 18:06:23
>>409
はあ?「Smalltalkかよ」だろ。
411デフォルトの名無しさん:2008/10/02(木) 21:07:28
ルビ厨はこれだから・・・
412デフォルトの名無しさん:2008/10/02(木) 23:10:09
振り仮名用の5.5ポイント活字ですね、わかります。
413デフォルトの名無しさん:2008/10/03(金) 00:30:48
いきなりだけど || 演算子のハナシ。

function foo(s){
s = s || 'default string';
...
}

みたいな記述をたまに見かけるんだけど、これ問題ない?
s が単に true になっちゃう処理系があってもおかしくない気がするんだけど。

function foo(s){
s = s==undefined ? 'default string' : s;
...
}

ってこれまで書いてたんだけど、上の例のほうが短いし、慣れれば読みやすい気もする。
ただ数値の場合は 0 渡したいときに困るかね?
414デフォルトの名無しさん:2008/10/03(金) 01:34:38
ECMA262より

The production LogicalORExpression : LogicalORExpression || LogicalANDExpression is
evaluated as follows:
1. Evaluate LogicalORExpression.
2. Call GetValue(Result(1)).
3. Call ToBoolean(Result(2)).
4. If Result(3) is true, return Result(2).
5. Evaluate LogicalANDExpression.
6. Call GetValue(Result(5)).
7. Return Result(6).
(中略)
NOTE
The value produced by a && or || operator is not necessarily of type Boolean.
The value produced will always be the value of one of the two operand expressions.
415デフォルトの名無しさん:2008/10/03(金) 03:50:28
たまにどころかprototype.jsはじめそこら中で使われてるべ?
むしろundefinedと==で比較する方がやばくね?
416デフォルトの名無しさん:2008/10/03(金) 04:51:27
> s が単に true になっちゃう処理系があってもおかしくない気がするんだけど。

つまり、undefinedがbooleanとしてtrueに扱われる処理系ってこと?
それはない。
417デフォルトの名無しさん:2008/10/03(金) 07:47:38
9.2 ToBoolean
The operator ToBoolean converts its argument to a value of type Boolean
according to the following table:

InputType Result
Undefined false
(略)

おまけに、
> 4. If Result(3) is true, return Result(2).

return Result(3)ではない。
418デフォルトの名無しさん:2008/10/03(金) 07:52:22
>>415
> むしろundefinedと==で比較する方がやばくね?

やばくないです。長いので省略しますが、11.9.1と11.9.3です。
419デフォルトの名無しさん:2008/10/03(金) 08:17:29
>>413
||は、true/falseじゃなく、元の値を返すという言語仕様だから、大丈夫。
420デフォルトの名無しさん:2008/10/03(金) 10:59:10
>>418
argument.length でチェックしないと意味が変わるでしょ
foo が何をする関数なのかにもよるけど 'default string' なら >>413 の後者は「間違い」
421デフォルトの名無しさん:2008/10/03(金) 11:23:51
言いたいことは一度に言って欲しいな
422デフォルトの名無しさん:2008/10/03(金) 18:33:03
>>418
引数のsはnullかもしれないし、falseかもしれないだろ。ダメじゃん。
423デフォルトの名無しさん:2008/10/03(金) 21:14:58
x64でうごくやつってないものか
424デフォルトの名無しさん:2008/10/03(金) 21:29:09
Rhino
425デフォルトの名無しさん:2008/10/03(金) 21:59:35
413 です、フォローありがとう。

今日、仕事帰りに本屋寄ったら、このスレでお勧めのサイ本売ってて、買ってきたよ。
古い本だと思ってたし、4200円と高いのでスルーしてた。

|| の仕様についてちゃんと載ってたよ。
何冊か入門書読んだけど、単なる論理ORだと思ってたが、違ったんだな。

ただ "" が false に型変換されるって記述もあったので、"" を与えたい場合には
やっぱり今までどおり

 s = s==undefined ? "default string" : s;

が良い気がしたよ。ただそれ以外では

 s = s || "default string";

って記述もアリなんだな。いやぁ、面白いわ。

ちなみに俺ってIE4, NS4 の頃あたりに一度、JavaScript やってた人なんだわ。
v1.2 までは || が ture になっちまうってサイ本にあって、俺の記憶と一致した。

この週末、頑張ってサイ本読むわ。
426デフォルトの名無しさん:2008/10/03(金) 22:02:35
>>418

いちおう s===undefinded にしなかったのは、s==undefined だと s==null のときにも反応してくれるから。
これは昔から一緒って言うか、定番の書き方だと俺の灰色の脳細胞に残ってた。

っていうか、サイ本、読んでておもしれーな。
427デフォルトの名無しさん:2008/10/03(金) 22:08:57
サイ本って新版でただろ
428デフォルトの名無しさん:2008/10/03(金) 22:43:00
まぢ? >>427

金曜夜の焼き鳥を諦め、その金で買ってきたのは第5版ってやつなんだが・・・
429デフォルトの名無しさん:2008/10/03(金) 23:47:53
>>428
それで大丈夫よ。427は
> 古い本だと思ってた
にひっかかって注意してくれたんじゃないかな。

焼き鳥で腹を膨らませるよりもよかったと思えることを願っているよ。
430デフォルトの名無しさん:2008/10/03(金) 23:48:06
http://www.oreilly.co.jp/books/9784873113296/
第5版出たのは去年だがそれが最新。第3版なら古いけど。
431デフォルトの名無しさん:2008/10/04(土) 00:08:45
>>429-430 ありがと、安心した。

読破したら、美味しい焼き鳥で自分を祝っちゃる!
432デフォルトの名無しさん:2008/10/05(日) 15:51:19
'aaaggfeeeehhh'.split(/(?=(.)\1*)/);

IE6:    a,a,a,g,g,f,e,e,e,e,h,h,h
Firefox3: a,a,a,a,a,g,g,g,g,f,f,e,e,e,e,e,e,e,e,h,h,h,h,h,h,h
Chrome: a,a,a,a,a,g,g,g,g,f,f,e,e,e,e,e,e,e,e,h,h,h,h,h,h

どれが正しいんですか?
433デフォルトの名無しさん:2008/10/05(日) 16:41:54
みんなちがって、みんないい。
434デフォルトの名無しさん:2008/10/05(日) 16:49:23
>>432
ほれ、http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-5_String_Objects.html#section-15.5.4.14
そういう時は自分の手で動かしてみるんだ

ちなみに俺が 'aahh'.split(/(?=(.)\1*)/) を自分の手で動かしてみたところ、
a,a,a,h,h,h,h となるのが正解という結論に達した
435デフォルトの名無しさん:2008/10/05(日) 18:27:22
>>434
ありがとうございます
1行ずつ解釈していったところ、どうやら同じ結果になったようです
つまりChromeが確かにECMA準拠ということですね・・・
うむむ、勉強になりました
436デフォルトの名無しさん:2008/10/06(月) 09:33:07
rhino: a,a,a,h,h,h,h
tamarin: aahh
437デフォルトの名無しさん:2008/10/06(月) 10:21:03
438デフォルトの名無しさん:2008/10/06(月) 11:51:29
そこんとこ3.1は今のところ3.0のまま。
439デフォルトの名無しさん:2008/10/06(月) 15:24:51
>>436
ちょw tamarin!

tamarinってもうSpiderMonkeyにマージされてんの?
440デフォルトの名無しさん:2008/10/06(月) 16:04:29
spidermonkey: a,a,a,h,h,h,h,h
441デフォルトの名無しさん:2008/10/06(月) 16:09:13
kjsembed(KDE): a,a,h,h
442デフォルトの名無しさん:2008/10/06(月) 16:14:42
v8: a,a,a,h,h,h,h
443デフォルトの名無しさん:2008/10/06(月) 17:03:08
IE/Tamarin/kjsembedはキャプチャ括弧の内容を追加してないんだろうけど
SpiderMonkeyがhを余分に出すのが謎だな
444こりゃたまらん!:2008/10/06(月) 17:25:01
>>443
tamarin> 'aahh'.split(/(?=(.)\1*)/)
aahh
tamarin> print('aahh')
aahh
tamarin> 'aahh'
aahh

445デフォルトの名無しさん:2008/10/06(月) 17:37:28
446443:2008/10/06(月) 18:28:15
>>444
あ、すまん、まったく分割されてないのね。カンマを脳内補完してた
Tamarin環境がないんだけど['a', 'a', 'h', 'h']ならa,a,h,hと出るんだよね?
447デフォルトの名無しさん:2008/10/06(月) 19:17:53
tamarin> ['1','2','3','4']
1,2,3,4
448デフォルトの名無しさん:2008/10/06(月) 20:56:53
タマランw
449デフォルトの名無しさん:2008/10/06(月) 22:33:15
PerlとRubyはv8と一緒だねぇ。
Pythonは分割してくれなかった。
450デフォルトの名無しさん:2008/10/06(月) 23:26:21
なんでjsの正規表現エンジンって独自なんだろう?って所まで遡るわけか
451デフォルトの名無しさん:2008/10/06(月) 23:41:05
正規表現の拡張は許されてるんだから
WebKitとかPCRE使うならPCREの機能フルに提供しろよって感じだな
452デフォルトの名無しさん:2008/10/07(火) 01:16:32
rubyの正規表現は鬼車だっけ
453デフォルトの名無しさん:2008/10/07(火) 11:12:21
PCREは仕様が結構変わるし、
PCREのまんまって仕様は難しいと思う。
今でもブラウザ依存が問題になっているのに。

それから、マッチに失敗した時は、空の配列を返せばいいのに…
454デフォルトの名無しさん:2008/10/07(火) 11:30:25
import pcre.*;
出来るようにならないかなあ。
455デフォルトの名無しさん:2008/10/07(火) 14:04:55
名前空間ってアボーンしたんじゃなかったけ?
456デフォルトの名無しさん:2008/10/07(火) 16:01:35
import pcre;でいいよ、もう。
457デフォルトの名無しさん:2008/10/08(水) 17:35:46
C++0xのregexがECMAScriptの仕様を参照しているから、
こっちが変わったら向こうにも影響するかも。
458デフォルトの名無しさん:2008/10/08(水) 21:12:10
正規表現で?<が使えるようにならないかな
459デフォルトの名無しさん:2008/10/08(水) 22:40:48
>>457
なんでよりによって?混乱すると思うんだが
460デフォルトの名無しさん:2008/10/08(水) 22:47:41
いっそSNOBOLとかIconを標準ライブラリに含めればいいんだよ。
javaあたりがやりそうで怖いけどなw
461not 457:2008/10/09(木) 01:09:33
>>459
正規表現文法は数タイプ実装され、フラグで切り替えられて、
そのsyntax_option_typeの中にECMAScriptというのがある。
ただECMA282と明記された上で、さらなる改変部分も明記されているので、
大きな混乱は生じないんじゃないか。

ECMAScriptの仕様でも、もし挙動を変えるとすれば、
互換モードを付けることになるんじゃないかな。
462デフォルトの名無しさん:2008/10/22(水) 15:20:15
262-3rd の 7 節を今ごろ読んでるんだけど、
lex レベルで InputElementDiv と InputElementRegExp のどちらを使うべき文脈か
なんてのは簡単に決められるの?結局きちんとパーズしないと駄目?
463デフォルトの名無しさん:2008/10/22(水) 17:39:15
文脈自由文法とかチョムスキー標準形とか分かりますか?
464デフォルトの名無しさん:2008/10/26(日) 23:31:11
V8からOpenOfficeのUNOに接続できたら汎用言語になる?
465デフォルトの名無しさん:2008/10/26(日) 23:33:04
今でも十分に汎用だよ。
466デフォルトの名無しさん:2008/10/27(月) 00:35:59
Rhinoな俺にはバックのjavaのライブラリが膨大すぎるんだがw
LiveConnect最高だ。
467デフォルトの名無しさん:2008/10/27(月) 10:57:21
>>464
やれやれー
468デフォルトの名無しさん:2008/10/27(月) 15:40:22
>>406
ES3.1はグローバルな名前空間一つしか用意しないで、
moduleを導入するみたい。elispやschemeのように。

>>399のような難しい話じゃないみたい。
とにかく仕様を整理しないといけないから、
構文も意味も全くいじらないで3.1を出す。
いじるのは4で入れる。

ただしコンパイル環境と実行環境でそろえないとまずいもの、
静的型チェック、名前空間などは入れたくないということらしい。
http://ejohn.org/blog/ecmascript-harmony/#comments

まあ、静的型チェック、名前空間があろうがなかろうが、
プログラムを書いている時と実行している時の
モジュールの仕様が変わったら、問題は出るはずなんだけど。
それを起こさないためのドメイン名風階層名前空間と
バージョン管理なんだから。
469デフォルトの名無しさん:2008/10/27(月) 23:09:19
>>468
ES3.1 draft に module 関係の言及はないと思うけど…後はいいけど。
470デフォルトの名無しさん:2008/10/27(月) 23:40:47
え? elisp にモジュール入るの?
471デフォルトの名無しさん:2008/11/21(金) 12:56:07
そういえばActionMonkeyが取りやめになったって、
MozillaがTamarinのGCを使うとかいってたのはどうなったの?
TraceMonkeyのGCはSpiderMonkeyのままなの?
472デフォルトの名無しさん:2008/11/21(金) 13:39:11
>>471
Mozilla Developer Conference 2008 で講演してた浅井さん曰く、
Tamarin の GC 取り込みはやる予定だが Fx 3.1 (Gecko 1.9.1) には入らないんだとさ

Fx 3.2 とか Fx 4 以降になるんじゃないかっていう話だったと思う
詳しく覚えてる人いたら詳細求む
473デフォルトの名無しさん:2008/11/21(金) 14:17:01
Tracing JITも同時に入れるって話じゃなかった?

tamarinのソースを少し読んだがあまりの汚さに驚愕。
入れるの取り止めになって正解。
あまりのことにMozilla弱体化の陰謀かと思ったよ。
Action Scriptの仕様は結構好きなんだが。
474デフォルトの名無しさん:2008/11/21(金) 18:05:33
475デフォルトの名無しさん:2008/11/22(土) 12:51:48
3.1にObject.seal()入るんだ。freeze()も。
よかった。
476デフォルトの名無しさん:2008/11/23(日) 05:15:49
前方互換が無くなるだけで不要な機能だろ
無用な方言を増やすだけの概念
477デフォルトの名無しさん:2008/11/23(日) 09:13:33
class, moduleその他、
動的に変って欲しくないオブジェクトのために必要なんだよ。
478デフォルトの名無しさん:2008/11/23(日) 22:17:26
seal も freeze も、Object.defineProperty の糖衣構文だと思う

やってることは「内部プロパティを変更」という点で共通してる
あるととっても便利(特に [[Enumerable]] の変更)
479デフォルトの名無しさん:2008/11/24(月) 03:15:50
便利かどうかなんて訊いた覚えはないがありがとう。
>“前方互換が無くなるので不要な機能”
forEach とかクラスメソッドは 3.0 でも Array や prototype を事前に拡張することで対応できる。
しかし Object.defineProperty は?
IE6 と IE7 で動かすためには __*** とか適当なプロパティ作って、
forEach をそれを見るような実装で上書きするような実装しか今俺には思い浮かばない。
とここまで forEach がある Array ならいいが
Object には Enumerable 関数は考えられてない(アホだよな)から
for in に対応できるような実装は不可能。

4.0 から 3.1 にした意味は?中の人は何も学習してないんだろうか。
480デフォルトの名無しさん:2008/11/24(月) 11:32:42
>>478
seal, freezeに関しては、
重要なのは提供方法ではなく、
・Objectが[[extensible]]でなくなる
・propertyが[[flexible]]、[[writable]]でなくなる
そのための方法があること。
これでライブラリー内部のエラー処理がずいぶんと楽になる。
ライブラリーユーザ側のデバッグも。

[[enumerable]]に関しては、
今のままではdirty hackの巣窟になりそうで、
何とかしないといけないとは思うけど、
前方互換の問題があるから慎重にやるべきだと思う。
特にメタな仕組みを持つライブラリに影響が大。
for in抽象はもうちょっとうまく整理するやり方があったと思う。
Javaのcontrol invacation syntaxみたいな。
481デフォルトの名無しさん:2008/11/25(火) 02:52:09
Object.forEach みたいな関数が出てきたとして、
Object はルート要素なんだから、全てのオブジェクトに forEach が無いとおかしい罠。
元はと言えば Object をハッシュのように使った“慣習”のツケなんだけど…
482デフォルトの名無しさん:2008/11/25(火) 09:28:53
>>481
> 元はと言えば Object をハッシュのように使った“慣習”のツケなんだけど…
kwsk

実装自体は連想配列なのに、使ってはならない理由があったの?
483デフォルトの名無しさん:2008/11/25(火) 10:03:02
Array のようにちゃんとデータ型として規定されてれば、
メソッドやプロパティの名前空間とぶつかるような実装にはならなかっただろうし、
enumerable のアリナシに四苦八苦することも少なかっただろうって話
484デフォルトの名無しさん:2008/11/25(火) 10:44:37
要はHashとかDictionaryとかいう型を別に作っておけばよかったということだな
中身はObjectとまったく一緒でいいけど
485デフォルトの名無しさん:2008/11/25(火) 10:53:50
特殊な組み込み型を用意するんじゃなくて、
そういうものを実装できる機構があればいい。

[[enumerable]]に関しては、
>>481の言うようにforEachはどのObjectも持つようにして、
for inはforEachメソッドを呼び出すように再整理するのがいいと思う。

Property attributeによる整理で基本的にはうまくいっている。
486482:2008/11/25(火) 12:16:11
thx

> 要はHashとかDictionaryとかいう型を別に作っておけばよかったということだな
言われてみれば激しく同意だなー
487デフォルトの名無しさん:2008/11/25(火) 18:04:15
>>484
そうすると、ESのESたる特徴がなくなってしまいますな。
つーか、それ、何のJavaの亜流?って感じになっちまう。実際なりそうだけど。 orz
488デフォルトの名無しさん:2008/11/26(水) 09:44:23
ボタンAを押すと自動的にボタンBを押すスクリプトはどう書けばよろしいのでしょうか?
489デフォルトの名無しさん:2008/11/26(水) 11:06:05
>>488
click()
たぶんスレ違いだからJavaScriptスレ池
490488:2008/11/26(水) 13:36:50
いえ、ecmaです。
よろしくお願いします
491デフォルトの名無しさん:2008/11/26(水) 13:45:27
ECMAScriptの仕様にボタンはない
492デフォルトの名無しさん:2008/11/26(水) 17:09:54
>>488
スレ違

たぶんこっち↓
+ JavaScript の質問用スレッド vol.67 +
http://pc11.2ch.net/test/read.cgi/hp/1223618153/
493デフォルトの名無しさん:2008/11/26(水) 18:30:20
> for in抽象はもうちょっとうまく整理するやり方があったと思う。
> Javaのcontrol invacation syntaxみたいな。

> for inはforEachメソッドを呼び出すように再整理するのがいいと思う。
旧 ES4 だと iterator::values() iterator::items() iterator::keys()
とか提案されてたが、ボツったわけでどーすんのやら。
http://wiki.ecmascript.org/doku.php?id=proposals:iterators_and_generators
494488:2008/11/27(木) 12:19:04
ありがとうございます。
行ってみます
495デフォルトの名無しさん:2008/12/07(日) 22:53:28
JScript「ecmaよ!私は帰ってきたぁー!!」
496デフォルトの名無しさん:2008/12/26(金) 06:46:44
ECMAScript の仕様書に出てくる "NoIn" って何を意味するんだぜ?
497デフォルトの名無しさん:2008/12/26(金) 10:39:43
>>496
for (<ここ>;...;...)
for (<ここ> in ...)
<ここ> の場所では in 演算子を使っちゃ駄目ってこと。

http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.8#section-11.8
の note
498496:2008/12/26(金) 16:06:40
>>497
ありがとう。
499デフォルトの名無しさん:2009/01/03(土) 19:39:07
499
500デフォルトの名無しさん:2009/01/03(土) 19:39:27
500
501デフォルトの名無しさん:2009/01/24(土) 21:01:52
ナットシェルのgood partが翻訳されて並んでたよ。
いい本だからお勧め。
502デフォルトの名無しさん:2009/01/30(金) 23:17:06
宣伝乙
503デフォルトの名無しさん:2009/01/31(土) 00:05:19
いやいや久々のECMA的Javascript本ですよ。
504デフォルトの名無しさん:2009/01/31(土) 07:53:26
宣伝乙
505デフォルトの名無しさん:2009/01/31(土) 10:33:12
2chの悪い癖だよね。
すぐに「社員」だの「工作員」だの。
506デフォルトの名無しさん:2009/01/31(土) 11:40:47
>>505
ただの相槌だから、
全く無反応よりはまし、と思っとけばよい。
507デフォルトの名無しさん:2009/01/31(土) 14:21:57
しかしnew使うなって言われるとちょっと違和感あるな。
個人的には関数はlowerCamel、コンストラクタはUpperCamelで
名づけるという「規約」をしみこませればそれでいいと思うんだけど。
508デフォルトの名無しさん:2009/01/31(土) 14:42:22
使うなとは書いてないよ。
>>507は読んでるから知っているだろうけど、
コンストラクタをnewなしで読んで、グローバルなthisを変更するミスを防ぐために、
UpperCamelでnew向けに書かれていることがはっきり分かるようにするといい。
もっといい対処方法はnewを使わないこと。
と"bad parts - new"の節に書いてある。
「ミスを防ぐためには」が前提の工夫の話。強制はしてない。
509デフォルトの名無しさん:2009/01/31(土) 18:31:13
なんで関数はlowerCamelなの?
キモい
510デフォルトの名無しさん:2009/01/31(土) 19:27:27
new 自体は使っているが、それを「見せないように」する、というハナシが書いてある(Object.create を実装するときに内部で new 使ってる)

ちなみに、Object.create は ECMASCript 3.1 の WD で定義されてる
511デフォルトの名無しさん:2009/01/31(土) 20:47:27
ファクトリメソッドってやつか。俺はnewの方が好きだな。
512デフォルトの名無しさん:2009/01/31(土) 21:17:29
var a = new Hoge();

a = {};
a.prototype = Hoge;
Hoge.call(a);
って等価?
513デフォルトの名無しさん:2009/01/31(土) 21:49:53
call()の第一引数は関数として呼び出すしcall()は戻り値がundefindだから別じゃない?
514デフォルトの名無しさん:2009/01/31(土) 21:51:02
ミス:call()は戻り値がundefind
call(a)は戻り値がundefind
515デフォルトの名無しさん:2009/01/31(土) 22:38:18
>>512は改めて見ると間違ってた
var temp = {};
temp.__proto__ = Hoge;
Hoge.call(temp);
var a = temp;
これなら等価かな?
516デフォルトの名無しさん:2009/01/31(土) 22:48:51
temp.prototype();
でいいけどね。
517デフォルトの名無しさん:2009/02/01(日) 17:10:33
すみません、教えてください。

↓のように二次元配列mを定義してwebブラウザのdocument.writeで
表示させてみると、定義の仕方によって表示が異なるのはなぜでしょうか。
また、【2】のように定義した場合でも、mに書式を与えて出力する関数を
書かずに【1】のように表示させる方法はあるでしょうか。

【1】リテラルで定義

var m = [ [ 1, 2 ], [ 3, 4 ] ];
document.write( m );        // 1,2,3,4 と表示

【2】コンストラクタで定義

var m = new matrix ( [ 2, 2 ] ); //要素が空の2x2配列を生成
hoge(m);               //適当な関数で各要素に数値を代入
document.write ( m )       // [object Object] と表示

//matrixの定義

function matrix (size) {      //sizeは[行数、列数]の形の配列

var i;

this.length=size[0];
for (i=0; i<size[0]; i++) { this[i]=new Array(size[1]) };

}
518デフォルトの名無しさん:2009/02/01(日) 17:32:16
>>517
1はArray.prototype.toString()の結果でそうなる。
2はmatrix.prototype.toStringを定義してないから
結果的にObject.porototype.toString()が使われる。
519デフォルトの名無しさん:2009/02/02(月) 20:37:36
4月でRhinoリリース10周年
520デフォルトの名無しさん:2009/02/02(月) 23:40:19
まじ?もうそんなたつの?
521デフォルトの名無しさん:2009/02/03(火) 01:23:33
MocaScript時代入れるととっくに10年過ぎてるSpiderMonkeyも思い出してあげてください。
522デフォルトの名無しさん:2009/02/03(火) 01:25:38
Spidermonkeyのソース読むと目眩するわ。
Connect, connect、どんだけ接続すんのかと。
523デフォルトの名無しさん:2009/02/03(火) 10:21:17
なに、NN5のソースに比べたらry
524デフォルトの名無しさん:2009/02/03(火) 13:40:32
mozilla関連のソースコードはもはやレガシーコード
いわばバベルです
525デフォルトの名無しさん:2009/02/03(火) 16:04:10
Fx4 (Mozilla 2) でその辺り整理するんだっけか
526デフォルトの名無しさん:2009/02/03(火) 19:47:38
Firefoxのコード見たらなんかキモかった
527デフォルトの名無しさん:2009/02/03(火) 23:47:37
NN5のソース見たらもっときもいぞ。
そもそもWinMain自体間違ってるとか・・・
528デフォルトの名無しさん:2009/02/04(水) 22:42:13
サイ本を超えるJavaScript(EcmaScript)本って出ないんだろうな。
そこまでいったら仕様書暗記しろレベルなんだろうな。
529デフォルトの名無しさん:2009/02/04(水) 23:49:10
俺はgood partがECMAscript本のベスト1だと思うよ。
530デフォルトの名無しさん:2009/02/06(金) 00:45:07
http://journal.mycom.co.jp/news/2009/02/05/039/index.html
> 【速報】Opera新JavaScriptエンジンCarakan発表、50倍高速化も

http://daniel.gredler.net/2009/02/05/javascript-performance-rhino-beats-ie/
> JavaScript Performance: Rhino beats IE? (daniel.gredler.net)
531デフォルトの名無しさん:2009/02/06(金) 17:18:18
OperaはCSSもそうだが特定の目的にのみ特化して最適化されてるから鵜呑みにしない方が良い。
汎用で早い部類に入るのはRhinoのコンパイルモードくらい。
532デフォルトの名無しさん:2009/02/06(金) 23:07:17
>>531
・Opera同士の比較である
・SunSpiderという標準的なベンチを使ってる
ということで、一行目はちょっと的外れかも。
533デフォルトの名無しさん:2009/02/09(月) 18:13:39
good PartsはDouglas Crockfordが著者だっけ?
JSONとかAjaxとかアホらしい。
534デフォルトの名無しさん:2009/02/09(月) 20:19:58
>>533は先入観が激しくてプログラマには向いてないな。
535デフォルトの名無しさん:2009/02/11(水) 06:38:44
いや、俺もAjaxは今やるのアホらしいと思う。
DOM-level3が全部勧告されてからにしたい。
イベントモデルが標準化されんことには……
536デフォルトの名無しさん:2009/02/11(水) 09:26:15
やる・やらないを技術の内容で決めてどうすんのさ。手段でしかないのに。

まぁ、やりたくない→やらなくて済む ならそれはそれで幸せだが。
537デフォルトの名無しさん:2009/02/11(水) 11:50:51
手段でしかないなら、普通はその技術の内容で
やる・やらないを決めると思う
538デフォルトの名無しさん:2009/02/11(水) 12:09:44
やりたいことがやれるかどうか、じゃねえの?
539デフォルトの名無しさん:2009/02/11(水) 13:03:41
Good Partsは、Ajaxのことは書いてない本

>>533はそういうことには触れてないくだらないボヤキ。

540デフォルトの名無しさん:2009/02/11(水) 13:04:30
やるやらないじゃなくて
やれるやれないじゃないの?
541デフォルトの名無しさん:2009/02/11(水) 15:53:06
>>535
今から歩いて、道を作っておくのも悪くない。
542デフォルトの名無しさん:2009/02/11(水) 15:53:48
ハムレットかよ!
543デフォルトの名無しさん:2009/02/11(水) 16:56:03
この流れは……
XMLHttpRequest(とXMLDocument)が
ECMAの組み込みオブジェクトになるフラグですか?
544デフォルトの名無しさん:2009/02/11(水) 17:14:23
>>543
どの流れか知らんがW3CがDOM/XHRをEcmaに
移管するという話は聞かないしそれはないだろうな。

それよりも http://journal.mycom.co.jp/news/2009/02/10/070/index.html
でモジュール読み込み周りが決められたら、それと
ES Harmonyのモジュール周りとがどう関係してくるか気になる。
545デフォルトの名無しさん:2009/02/11(水) 17:59:15
>>543
Modules 原案
http://docs.google.com/Present?docid=dcd8d5dk_0cs639jg8

https://mail.mozilla.org/pipermail/es-discuss/2009-February/008726.html
1月のミーティングでは好印象、作業も少しはじめてる?
Dave Herman 自身は気になる所もあるようだが、詳細不明。
546デフォルトの名無しさん:2009/02/11(水) 22:32:03
そもそもJavaScriptだけがなぜかEcmaで標準化されたのか?
W3Cがやっておけば関連仕様との調整もスムーズに行きそうなのに。
DOMとかXMLHttpRequestって絶対言語に食い込んで来ると思うんだが。
jsは元々DOMを操作するための言語だったし、js1.4で仕様が切り離されるまでは・・・。
547デフォルトの名無しさん:2009/02/11(水) 22:54:36
W3CはJavascript否定路線だったもん。
W3C自体今はかなりやばい立場だし。
548デフォルトの名無しさん:2009/02/11(水) 23:12:37
W3CはNTTのせいでNGNが完全にバズワードになってるのがカワイソス。
549デフォルトの名無しさん:2009/02/13(金) 08:08:13
Compact Profileはeval入ってないのか。
JSONじゃなくXMLだけでAjaxやれってこと?
550デフォルトの名無しさん:2009/02/13(金) 14:52:04
JSONはes4で読み込みライブラリが付くはずだったけど3.1はどうなるんだろう。
551デフォルトの名無しさん:2009/02/13(金) 15:22:36
>>549>>550
いつの話をしてるの?
Ajaxなんてまるで想定してないのがES-CP。
http://www.ecma-international.org/publications/standards/Ecma-327.htm
552デフォルトの名無しさん:2009/02/13(金) 22:30:12
>>549
Compact Profile の考えを Security 関連に絞って再構築しているのが
Secure ECMAScript。これも eval がない。
http://wiki.ecmascript.org/doku.php?id=ses:ses

>>550
Draft as of 09 Feb 2009 だと JSON 関連は生きてるが
http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft
553デフォルトの名無しさん:2009/02/13(金) 23:41:25
>>551
もう3.1はこのドラフトで殆んど出来上がってるように見えるんだが
あと何が足りないんだ? さっさと勧告してほしい。
遅れれば遅れるほどIEのJS2の実装が延びる……
554デフォルトの名無しさん:2009/02/13(金) 23:47:27
MSが実装をどうするかなんて標準化作業の進み具合とはあまり関係ないだろ。
直接MSにこれはこうだからこうしろと文句いうほうが10倍は影響力がある。
555デフォルトの名無しさん:2009/02/13(金) 23:48:48
IEなんざapplication/ecmascriptどころか
application/javascriptすら読み込まないじゃねーか
当分無視でいいだろ。
556デフォルトの名無しさん:2009/02/14(土) 00:27:01
>>553
IEのスケジュールに影響するから早くしろって言うのか?
557デフォルトの名無しさん:2009/02/14(土) 00:52:02
JScriptなんて元々眼中にない。
Ecmaに限ったことじゃないが今まで散々標準に準拠しなかったのが最近になって対応をやってるが
ブラウザ界だとIE8を超えれば落ち着くだろう。(もちろん、ろくな標準準拠は果たせず)
XML関連はもっと悲惨だろう。
今の実装を捨てない限り永久にまともな実装は出てこないだろう。

結果、相も変わらずIEは無視したいができない現状が続くかと・・・。
558デフォルトの名無しさん:2009/02/14(土) 06:20:35
IEの何が悲惨って、
実装が糞のくせにOS組み込み型だから
アップデートが遅いのが一番悲惨

Chromeみたいに一定周期で安定版を
出してくれれば、まだ救いがあるのに
559デフォルトの名無しさん:2009/02/14(土) 08:13:14
IEならWindowsUpdateがあるじゃないか
ただ大田総理が「今までできてたことができなくなるからUpdateイラネ」って言ってた。
560デフォルトの名無しさん:2009/02/14(土) 09:21:14
敢えてアップデートはせずに脆弱性突かれ放題にしておくんですね。分かります。
561デフォルトの名無しさん:2009/02/14(土) 09:40:18
大田総理が言いたいのは
「今まで脆弱性を突き放題できてたことができなくなるから皆がUpdateするのイラネ」
ってことじゃね
562デフォルトの名無しさん:2009/02/28(土) 11:19:06
stringオブジェクトについて少し質問です。
標準仕様にあるtoLowerCaseメソッドとtoLocaleLowerCaseの違いについて知りたくて調べております。
標準仕様によると
> 正規 Unicode 文字マッピングで言語の規則が干渉する (たとえばトルコ語のような) ごく一部の文字でのみ違いが存在する。
とありますが、この文章の意味はいったい何なのでしょうか?
最初はドイツ語のウムラウト(Ü)等、英語のアルファベット以外も正しく小文字に変換するのだろうと思っていたのですが
ドイツ語やフランス語でも(toLowerCaseメソッド/toLocaleLowerCase)の双方で結果が同じでした。
キリル文字(ロシア語)のグレイヴ付きЕ、グレイヴ付きИだけ、ブラウザごとに違いが出ました。
正直浅学を恥じますが、少々でも知識のある方いらっしゃいましたらご教授お願いいたします。
563デフォルトの名無しさん:2009/02/28(土) 12:20:34
実装依存じゃないのかな。
564デフォルトの名無しさん:2009/02/28(土) 13:18:10
トルコ語の例というのは多分Iとİのことでしょう。
通常ならIの小文字はiですが、トルコ語にはIの他にİという文字があり、
iは後者の小文字として扱われます。
I → ı
İ → i
この辺をきっちり処理するのがtoLocaleLowerCaseなのではないかと。
565562:2009/02/28(土) 15:28:43
なるほど、そうなると日本語を選択した環境では
「I」、「İ」共に小文字のiが返るのが仕様上正しいのですね。
一応各ブラウザ上での動作です。
IE:I→i,İ→İ
Firefox:I→i,İ→i
Opera:I→i,İ→i
Saari:I→i,İ→i
ieだけlocaleLowerCaseで大文字のİが返ります。

グレイヴ付きЕ、グレイヴ付きИでの変換の結果が違うのは、マイナー文字なので対応が遅れているだけなのでしょう。
566デフォルトの名無しさん:2009/02/28(土) 17:41:38
そういやString.toLocaleString()って仕様上はロケールに合わせた文字列を返すんだよな。
SpiderMonkeyの実装だとObject.toLocaleString()はtoString()を返してArray,Number,Dataしかオーバーライドされてないんだが結局これも実装依存なんだろうか?
567562:2009/02/28(土) 23:38:57
> Object.prototype.toLocaleString()
> この関数の最初のパラメータは、この標準の将来のバージョンにおいて使用されそうである
とあるので、Objectではこれで良いのでしょう。
Arrayは、飛ばして議論をすると
Date
> ホスト環境の現在のロケールの慣習に該当する形式の Date の表現が意図される。
Number
> この関数は実装依存で、 toString と同じものを返すことを許可されているが推奨もされない。
となっているので、仕様では何も定めていませんね。実装依存でしょう。
しかし、実際に調べてみるとブラウザ毎にまちまちになっていますね。

document.write( (1000).toLocaleString() +"<br />" );
document.write( (new Date()).toLocaleString() +"<br />" );

Dateオブジェクト
IE 1,000.00
Firefox 1,000
Opera 1000
Safari 1000

Numberオブジェクト
IE 2009年2月28日 23:16:34
Firefox 2009年2月28日 23:14:51
Opera 2009/02/28 23:16:00
Safari Saturday, February 28, 2009 23:15:29

見た感じではFirefoxが一番頑張っていて、Opera、Safariは日本語環境を考えていない印象を受けますね。
これは日本語環境下での動作でしょうから、他言語ではどうなるのかが気になりますが…
568デフォルトの名無しさん:2009/02/28(土) 23:46:55
そのOperaの日付表記は、明らかに日本語環境の短い形式でしょう。
569デフォルトの名無しさん:2009/02/28(土) 23:58:00
ちなみにC#(というか.NET)でこういうことすると、こういう表示になる。
-----
Console.WriteLine(DateTime.Now.ToString(new CultureInfo("ja-jp").DateTimeFormat));
Console.WriteLine(DateTime.Now.ToString(new CultureInfo("en-us").DateTimeFormat));
Console.WriteLine(DateTime.Now.ToString(new CultureInfo("en-gb").DateTimeFormat));
-----
2009/02/28 23:56:31
2/28/2009 11:56:31 PM
28/02/2009 23:56:31
570デフォルトの名無しさん:2009/03/01(日) 00:37:11
yyyy/mm/dd time方式ってRFCになかったっけ?
それかどこかで標準化されてないっけ?

んで結局>>567はString.toLocaleString()の話をしてないのはなんで?

#Data.prototype.toLocaleString()はSwatch Internet Timeを返すべきだと思うんだ。ブラウザの実装だしとかいってみるw
571デフォルトの名無しさん:2009/03/01(日) 01:02:22
ISO8601にある。
572デフォルトの名無しさん:2009/03/01(日) 01:07:01
ISO8601で'/'は範囲(期間)を示すから違うのでは?
2009-03-01T01:05:23+09:00って形式でしょう。
573567:2009/03/01(日) 07:38:14
なんだか知らない単語が吹き出してきて少し困りました…

とりあえず、ちょっとだけ整理のために…
Object.toLocaleString()はオーバーライドされるために定義されてだけなのでtoString()と同じで良いし
Array.toLocaleString()は、他のオブジェクトのtoLocaleStringで文字列化してから連結する、なのでこれは無視して良い。
なので問題はDateとNumberオブジェクトでどうするかなのだと思うのです。
仕様を読むと次の様になっています
> Date.toLocaleTimeString()
> この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な、ホスト環境の現在のロケールの慣習に該当する形式の Date の "date" 成分の表現が意図される。
> Number.toLocaleString()
> ホスト環境の現在のロケールの慣習に沿って整形される Number の値を表す文字列値を生成する。この関数は実装依存で、 toString と同じものを返すことを許可されているが推奨もされない。
「2009-03-01T01:05:23+09:00」の形式に関してはHTMLの[DATETIME]形式ですね。
http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/types.html#type-datetime
ISO8601に関してはググったらwikipediaに該当項目がありました
http://ja.wikipedia.org/wiki/ISO_8601

私の場合は、ロケールの慣習に該当するというのは「○月×日」みたいな感じに返してくれるのが正しい様な気がしたのですが、んー知識不足です。正直言って。
574567:2009/03/01(日) 10:45:13
あとすいません忘れてました。String.toLocaleStringは標準仕様では存在していなかったです。
なのでプロトタイプチェーンを手繰ってObject.toLocaleStringを呼び出しているはず…。
575デフォルトの名無しさん:2009/03/01(日) 12:40:31
>>573
おかしいよその仕様。どこで見たの?他と取り違えてるかコピペミスしてるよね。
原文を当たるまでもないが、一応:

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
15.9.5.7 Date.prototype.toLocaleTimeString ( )
This function returns a string value. The contents of the string are implementation-dependent, but are
intended to represent the “time” portion of the Date in the current time zone in a convenient, humanreadable
form that corresponds to the conventions of the host environment’s current locale.
576574:2009/03/01(日) 15:51:10
あ、申し訳ございません。
ご指摘のとおり、私のコピペミスですね。
Date.toLocaleString()の方をコピペすべきだったのですが…。
原文と邦訳の方載せておきます。

http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html
> この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な、ホスト環境の現在のロケールの慣習に該当する形式の Date の表現が意図される。
> NOTE この関数の第一引数は、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨される。

> 15.9.5.5Date.prototype.toLocaleString()
> Thisfunctionreturnsastringvalue.Thecontentsofthestringareimplementation-dependent,butare
intendedtorepresenttheDateinthecurrenttimezoneinaconvenient,human-readableformthat
correspondstotheconventionsofthehostenvironment*fscurrentlocale
> NOTE
> Thefirstparametertothisfunctionislikelytobeusedinafutureversionofthisstandard;itis
recommendedthatimplementationsdonotusethisparameterpositionforanythingelse.

みなさま、申し訳ありませんでした。
577デフォルトの名無しさん:2009/03/06(金) 23:02:44
3.1の仕様マダー?
578デフォルトの名無しさん:2009/03/07(土) 03:22:26
579デフォルトの名無しさん:2009/03/19(木) 16:07:40
ははは
580デフォルトの名無しさん:2009/03/27(金) 16:29:12
581デフォルトの名無しさん:2009/03/29(日) 18:43:32
ES4は欠番なのかぁ
582デフォルトの名無しさん:2009/03/29(日) 19:53:53
>>580は滅茶苦茶重いサイトだな
583デフォルトの名無しさん:2009/03/29(日) 22:18:55
ES4には絶対しないって意思の現れだね。
584デフォルトの名無しさん:2009/03/29(日) 22:21:43
次は3.14だな
585デフォルトの名無しさん:2009/04/02(木) 16:48:57
ActionScriptとの統合もなさそうだなあ
586デフォルトの名無しさん:2009/04/02(木) 20:12:10
>>583
作者死亡と共にバージョンπになるんですね
587デフォルトの名無しさん:2009/04/02(木) 20:26:34
クヌースは何歳まで生きられるんだろう?
588デフォルトの名無しさん:2009/04/02(木) 23:19:35
>>587
長寿の血統ではあるらしい。
589デフォルトの名無しさん:2009/04/10(金) 12:40:35
590デフォルトの名無しさん:2009/04/18(土) 23:06:48
スレチかも分からんけど、ECMAScriptってMIMEでバージョン指定できたっけ?
たとえばapplication/ecmascript;version=3.0みたいな。
できないと3.1が出てからクロスブラウザ対策が面倒になるんだよなー。
591デフォルトの名無しさん:2009/04/19(日) 01:01:02
592デフォルトの名無しさん:2009/04/29(水) 18:21:55
ActionScriptはどうなっちゃうの?
593デフォルトの名無しさん:2009/04/29(水) 19:35:46
ASがESに合わせて仕様を変えるんだろ。
594デフォルトの名無しさん:2009/04/30(木) 21:36:27
なんというなみだ目
595デフォルトの名無しさん:2009/05/03(日) 00:11:57
先走りすぎただけだ。
ASはASで生き残るかもよ
596デフォルトの名無しさん:2009/05/08(金) 13:57:13
ActionScriptはいいところ一杯あったけど、
開発者メーリングリストとソースコードを読んで、
大雑把な仕様策定に汚いコードでびっくりした。
擁護する気が萎えた。


597デフォルトの名無しさん:2009/05/08(金) 17:56:38
完全に振り回されたなASは
AS2のような
AS3仕様で開発可能なES5準拠のAS4を出してくれw
598デフォルトの名無しさん:2009/05/09(土) 01:59:12
jQueryを今頃発見してるけど、なんとなく動的にDOM管理するのに
慣れない。 PHPでCSSのクラスかいていい気になってたんじゃ
とてもじゃ無いけどやってけんらしい。
599デフォルトの名無しさん:2009/05/11(月) 16:31:14
見放されたASプログラマがGnashに集結して・・・・って展開はないかな
600デフォルトの名無しさん:2009/05/11(月) 16:45:33
終結してどうすんだよ
AS書くのとAS実装を書くのは全然違うぞwww
601デフォルトの名無しさん:2009/05/12(火) 00:58:08
終結とは巧いじゃないか
602デフォルトの名無しさん:2009/07/10(金) 21:57:17
セルフコンパイラというものがあってだな
603デフォルトの名無しさん:2009/07/25(土) 01:30:12
rhino 1.8マダー?
ジェネレータ式ないとコード長すぎる。
604デフォルトの名無しさん:2009/08/01(土) 00:21:20
DoJo の話題はこのスレで良いですか?
605デフォルトの名無しさん:2009/08/01(土) 00:21:58
DoJo の話題はこのスレでよいですか?
606デフォルトの名無しさん:2009/08/01(土) 00:33:57
DocomoのJava環境のこと?
最近のは知らないが違うんじゃないかな。
607デフォルトの名無しさん:2009/08/01(土) 02:03:45
>>606
チミが場違い

と言われかねんぞ その発言はw
608デフォルトの名無しさん:2009/08/01(土) 04:20:14
609デフォルトの名無しさん:2009/08/01(土) 12:56:41
>>604-605
きっとボケたんだよ。
「どうじょ(どうぞ)」って返してほしかったんだと思う。
イマドキJavaとJavaScriptを混同するようなやつはいねーよ。
610デフォルトの名無しさん:2009/08/03(月) 12:43:32
この板に張り付く様な奴は、JavaとJavaScriptを混同することは無いと思うが、
デザイナ上がりの自称Webプログラマーとかいう奴で、JavaとJavaScriptの区別のつかない奴にあった事ある(3人程)。

その内一人は、客先でJSをJavaとか言う出すもんだから「弊社のサーバではJavaは実行できない」とか客に言われて、
訂正の連絡を入れる羽目になった。

そいつは、もうオレと同じ職場に居ない...
611606:2009/08/03(月) 16:08:48
なんか俺のせいで変な方向にスレがすすんでる。
dojoをdojaに見間違えてただけなんだが、
正直すまんかった。
dojoはAjaxなどへのjavascriptの応用技術なんだが、
このスレは言語規格を扱うスレなんでスレ違いということ。
612デフォルトの名無しさん:2009/08/04(火) 01:51:27
> dojoはAjaxなどへのjavascriptの応用技術なんだが、

痛々しいぜ
613デフォルトの名無しさん:2009/08/04(火) 12:55:08
えっ?

ネタでスレをだらだらと進めているかと思って楽しんでいたのだが...

マジっすか!
614デフォルトの名無しさん:2009/09/04(金) 20:21:28
MozillaとRhino以外にJS1.8に対応の処理系ってあるの?
615デフォルトの名無しさん:2009/09/04(金) 20:53:00
JS1.8の拡張はESと関係ないからスレチじゃね
616デフォルトの名無しさん:2009/09/05(土) 00:08:44
617デフォルトの名無しさん:2009/09/05(土) 02:50:39
>>2
>このスレでは、★言語★としてのECMAScript(JavaScript、JScript等)の話題を扱います。
って書いてあるからOKかと思ったんだけど
618デフォルトの名無しさん:2009/09/05(土) 03:39:06
だーかーらー
JS1.8ってECMAの仕様と関係無いモジラの独自拡張だろって言ってんだよ
JavaScript関係なら専スレがこの板にもあるからそっち池
619デフォルトの名無しさん:2009/09/05(土) 03:45:40
>>618
それ言いだしたらJScriptとか独自拡張の産物だろw

JavaScriptスレはここにwebネタを持ち込まないための隔離スレ以外のなにものでもない
新スレ立っちゃったのが正直残念
620デフォルトの名無しさん:2009/09/05(土) 04:09:28
>>619
独自拡張も何も、JScriptとJavaScriptは本来別物だろう
ECMAScriptって呼べるのは後から作られた標準規格に当たる部分と、E4X拡張だけ
最新バージョンのJavaScriptやJScriptに対して、ES規格は標準化のためのサブセットであって
ES規格からはみ出た部分はそれぞれの独自拡張でしかない
621デフォルトの名無しさん:2009/09/05(土) 05:53:07
622デフォルトの名無しさん:2009/09/05(土) 06:51:27
×独自拡張の産物
○ゲイツのエゴの産物

Rhinoはまだjs1.8対応してないぜ

>JScriptとJavaScriptは本来別物だろう
JScriptは別物だがjsはルーツだからべつものではないだろ。
ecma-262はjsの共通仕様にすぎん。
ecmaは
その共通仕様部分以外関与しない方針なんで実質ベンダーの仕様とその実装されたエンジンの話が出てくるのは仕方がない。
まあJavaScriptってもDOMとLiveConnectはスレチだろう。
623デフォルトの名無しさん:2009/09/07(月) 15:14:23
今更だがJS/UIX面白いな
http://www.masswerk.at/jsuix/

しかしアドレスバーや内部のデバッガから
直接いじれるからすぐに(ry

メソッドやプロパティの隠蔽って出来ないのかな
624デフォルトの名無しさん:2009/11/07(土) 02:47:40
http://ja.wikibooks.org/wiki/JavaScript
何回目かの書き込みスイマセン
時々追記や修正を行ってくださる方がいて、心がほっこりするのですが
基本孤独な戦場な感じなので、できればお仲間を募集中です
625デフォルトの名無しさん:2009/11/07(土) 08:27:55
仕様書丸暗記して出直して来い。
間違えだらけで書き切れんわ。
626デフォルトの名無しさん:2009/11/07(土) 12:16:39
>>624
2年くらい前に見て、ないほうがよかったと思ったやつだな
627デフォルトの名無しさん:2009/11/07(土) 13:11:08
>>624
すべてがハッシュとして記録される、っていうのは
仕様として決まってたっけ……?
628デフォルトの名無しさん:2009/11/07(土) 18:36:54
いや、見た目がハッシュなだけで内部の実装に影響する記述はない。
Object objectがハッシュ風にアクセスできるだけ。
プロパティのインデックスでもアクセスできるのにハッシュだと定めると都合悪いっしょ。
629デフォルトの名無しさん:2009/11/07(土) 18:53:51
整数以外のインデックスでアクセスできるのが、
ハッシュテーブル・インターフェースの特徴でしょ。
630デフォルトの名無しさん:2009/11/07(土) 19:59:09
それは連想配列の特徴だな
そしてハッシュテーブルによる実装が主流とはいえ手法は他にもある

例え現存する全てのECMA実装がハッシュテーブルを選択していたとしても
仕様として決まっているとは言えない
631デフォルトの名無しさん:2009/11/07(土) 22:59:06
Rhinoだと効率重視なのか自前のハッシュだった。
632デフォルトの名無しさん:2009/11/08(日) 10:50:20
ツリーによる実装でもいいしね。
633デフォルトの名無しさん:2009/11/08(日) 19:28:52
es5のFunction.prototype.bind()とかObjectのプロパティ操作系拡張って誰得?
プロパティ操作が標準化されるのはまだいいが。
バインドとかいまでも当たり前の機能でしょ?

そんなことより

var calc = (function(){
var a=0;
this.func = function(x){
return a + x;
}
return {
inc : function(){
return func(1);
}
}
}

)();

calc.inc();

こんなコード書かなきゃプライベートなメンバ定義できないのを何とかしてくれ。
634デフォルトの名無しさん:2009/11/08(日) 20:05:43
クラス指向はes4と一緒に死んだんだよ。
635デフォルトの名無しさん:2009/11/08(日) 20:09:35
クラスが作れないのに「私をクラスにして」と言わんばかりの文法だからイライラするw
636デフォルトの名無しさん:2009/11/09(月) 12:29:35
AdobeのActionScriptは独自路線を突き進んでいますが、
これをECMAが取り入れてほしいともうのだが、駄目だろうか?

時期、Flash CS5 では、なんとiPhoneのプログラミングもできてしまうというので、
ActionScriptのバージョンも上がるかもしれない。

ECMAScriptの未来はActionScriptの中にあるとおもうのだが、どう思うだろうか?
637デフォルトの名無しさん:2009/11/09(月) 17:35:27
>>636
iPhone用のプログラミングができることと、ActionScriptの仕様は別の話
あれは確かActionScriptをObjective Cにコンバートするような代物だったはず

あと、ActionScriptが採用したES4仕様案は廃棄されたから、ぶっちゃけお先真っ暗

次期ECMAScriptは5(旧3.1)になるし、一部ES4仕様も5に入ってるから、それでいいんじゃない?
638636:2009/11/10(火) 12:37:41
>>637

>あれは確かActionScriptをObjective Cにコンバートするような代物だったはず

そうだったんですか!勘違いしていました。
実際、ActionScriptのお先真っ暗というお話を聞いて、少し悲しくなりました。

ECMAScriptの進化はゆっくりしているようですが、
HTML5がメジャーになれば、今よりも速いスピードで進化していくのでしょう。

そうしたら、ActionScriptも淘汰されてしまうのでしょうね...orz
639デフォルトの名無しさん:2009/11/11(水) 10:04:38
HTML5とECMAScriptは関係ないよ
そこゴッチャにするとまともな議論なんかできない
ひと昔前にW3C DOMとECMAScriptをゴッチャに考えてた輩と同じ思考してない?

ActionScriptがどうなるかは、次期ActionScriptがどうなるかと、Flashをとりまく情勢がどうなるかで決まると思う
世の中にはHTML5とFlashを同列に語ってるバカも多いけど、そもそも大元が違いすぎるから比較するだけ無駄
何だかんだでHTMl5とFlashはうまく棲み分けされてくんじゃないかな

結局、ActionScript自体はまだ残り続けていくだろうよ
640デフォルトの名無しさん:2009/11/12(木) 13:39:18
Edition 5(旧称3.1)は来月にもECMAで承認、そのままファストトラックで
JTC1へ提出されるそうだ。
ttp://www.ecma-international.org/memento/TC39-M.htm
641デフォルトの名無しさん:2009/11/12(木) 15:39:09
>>640
> It is anticipated that this will result in a fast-track submission to
> ISO/IEC JTC 1 for revision of ISO/IEC 16262.
JTCってなにかと思ったけど、ISO/IECの話か

ECMAに送付されるバージョンは
http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft
の一番上にある"Final TC39 Approved Draft"でいいのかな?

このドラフト、ECMAに出す出さないの瀬戸際になってからバグFixされまくってたから
まだ何か潜んであるんじゃないかと心配になる・・・
642デフォルトの名無しさん:2009/11/12(木) 16:42:53
そういや、JavaScriptが標準化されてること自体がマイナー知識だけど
ISO/IEC JTC1でも標準化してるって更にマイナーな知識だよな
JIS規格ともなると、読んだことのある開発者はいるのかっていうレベル
643デフォルトの名無しさん:2009/11/12(木) 19:19:26
JIS に規格票はかなりやる気ないな
644デフォルトの名無しさん:2009/11/12(木) 20:03:20
なんにせよ来月には公開ってことか。めでたい。
645デフォルトの名無しさん:2009/11/12(木) 21:18:30
規格気にする奴ならマイナーな知識でもないと思うが
普通はそもそも標準化って何ってレベルか
646デフォルトの名無しさん:2009/11/12(木) 23:58:33
え、JISにもjavascriptあるの?
JIS X 3014みたいな翻訳じゃなくて?
正直ecmaとmozillaの仕様以外どうでもいいなぁ。
オープンスタンダードとデファクトスタンダード記憶しとけば問題ないし。
まあjs1.1 - 1.8.1とJScriptとECMA-262 ed.3は覚えてるけど。
647デフォルトの名無しさん:2009/11/13(金) 00:42:31
翻訳っつーとTRとかと誤解されそうだが、まあ、JISのはただの翻訳だ。
JavaScriptじゃなくECMAScript。Wikipediaにもいつのまにか載ってるな
648デフォルトの名無しさん:2009/11/13(金) 12:22:53
標準規格は「絵に描いた餅」。
読むだけ時間の無駄。
649デフォルトの名無しさん:2009/11/13(金) 20:46:00
>>648
その絵に描いた餅を元にJavaScript2.0が作られる予定ですけど?
650デフォルトの名無しさん:2009/11/14(土) 17:08:16
絵に描いた餅を現実化するのが実装者の仕事
餅を作るのに毎回絵から描き直してたらそれこそ時間の無駄だろ
651デフォルトの名無しさん:2009/11/14(土) 18:10:37
じゃあ、読むのは時間の無駄じゃねーじゃん
652デフォルトの名無しさん:2009/11/16(月) 11:52:29
>>648
じゃあECMAScript実装に貢献してくれ
MozillaでもAppleでもいいからさ

それはそうと、JISのほうってWeb上で公開されてたっけ?
それとも、よくある「金出して冊子買え」商法になってる?
653デフォルトの名無しさん:2009/11/16(月) 15:44:58
jis検索でググれ
654デフォルトの名無しさん:2009/11/16(月) 20:36:49
>>652
JISC とかいう組織のサイトで見れるよ。
但し、保存も印刷も出来ない細工をしてるつもりらしい。
実際にはこのスレ見てるような人なら簡単になんとか出来るだろうけどな。

どういうわけか見れる pdf は文書をラスタ画像化したものになってるので、
微妙にキタナい。 検索も出来んし。
655デフォルトの名無しさん:2009/11/17(火) 00:28:38
大変アレなお知らせだが、そのJISCこそがISOにおける我が国の代表だ。
ttp://www.iso.org/iso/about/iso_members.htm
656デフォルトの名無しさん:2009/11/17(火) 00:40:45
>654
っていうか一般人でも印刷は普通に出来る。
わざわざハックしなくても、スクショ(ry
657652:2009/11/17(火) 11:14:18
>>654
完全に失念してた!ありがとう
http://www.jisc.go.jp/app/pager?id=22527

中身は色々と残念すぎるので見なかったことにしたい・・・
658デフォルトの名無しさん:2009/11/17(火) 13:44:13
翻訳くらいしろよと小一時間問い詰めたい
659デフォルトの名無しさん:2009/11/21(土) 19:57:35
prototype.jsってECMAScript仕様に適合してる?
それともJavaScriptの拡張も使ってる?

分かる人いたら教えてくれ。
660デフォルトの名無しさん:2009/11/22(日) 00:36:33
クロスブラウザな時点でわからないならry
661デフォルトの名無しさん:2009/11/22(日) 06:14:33
$を平気で使ってる時点で察しろ
662デフォルトの名無しさん:2009/12/01(火) 13:46:52
誰だよ単発のRhinoスレ立てた馬鹿は?
javascriptスレの連中か?
663デフォルトの名無しさん:2009/12/05(土) 15:51:05
5th来たよー
http://www.ecma-international.org/publications/standards/Ecma-262.htm

ドラフトはdocでも公開されてたけど正式版はpdfだけなの?
664デフォルトの名無しさん:2009/12/07(月) 14:09:54
で、5版の規格ではどんな機能が追加されたの?
教えて偉い人
665デフォルトの名無しさん:2009/12/07(月) 17:31:45
嫁!
666デフォルトの名無しさん:2009/12/11(金) 22:24:42
どうかFirefoxのスクリプトの後方互換性ができるだけ失われませんように……
667デフォルトの名無しさん:2009/12/12(土) 20:52:56
言語仕様が変わらなくてもDOMの方で変わっていくから・・・
668デフォルトの名無しさん:2009/12/12(土) 20:54:54
なにやってもどうせIEが糞実装だから心配するな。やるべきことは変わらん。
669デフォルトの名無しさん:2009/12/14(月) 10:45:03
ES3に毛が生えた程度のES5で
後方互換性が気になるような書き方をしていたのなら
豆腐の角に頭ぶつけた方がいいぞ
670デフォルトの名無しさん:2009/12/14(月) 14:09:02
誰得メソッド満載な仕様が嫌だ!
671デフォルトの名無しさん:2009/12/14(月) 17:27:56
ECMAScript 5th Editionで改善された3rd Editionの項目
ttp://d.hatena.ne.jp/mindcat/20090504/1241457770
672デフォルトの名無しさん:2009/12/29(火) 17:48:39
"use strict";
673デフォルトの名無しさん:2010/01/12(火) 17:04:39
ecma5でもオブジェクトのプライベートメンバー作れないのかよ
あとgoto文も使えないな
674デフォルトの名無しさん:2010/01/12(火) 19:36:41
なんでgoto文いれるんだろう?
JSでyaccでも書かせるのかな
675デフォルトの名無しさん:2010/01/20(水) 15:35:02
ES5にgotoないよね?
使えないってuselessではなくunavailableの意味だよね?
676デフォルトの名無しさん:2010/01/28(木) 17:23:26
677デフォルトの名無しさん:2010/03/04(木) 19:12:57
カウチdata baseって大規模なwebでも使えるものなの?
678デフォルトの名無しさん:2010/03/26(金) 17:16:16
Errorオブジェクトは例外の種類は分かるけど
どこで例外が投げられたか分からないのが糞
679デフォルトの名無しさん:2010/04/01(木) 18:56:03
SpideMonkeyで配列内包をwithの中で使ったときの動作がおかしい気がするんだけど

alert([i*i for each(i in [1,2,3])]); //OK
with({}){
alert([i*i for each(i in [1,2,3])]); //ReferenceError: i is not defined
}
680デフォルトの名無しさん:2010/04/09(金) 23:49:24
letも分割代入もできるJS1.7でwithを使う奴の気がしれん
681デフォルトの名無しさん:2010/04/21(水) 23:50:06
with,Call,ClosureはNetscapeからの贈り物。
importとexportは取り込んで良かったと思う。
682デフォルトの名無しさん:2010/08/10(火) 17:59:05
ttp://www.publickey1.jp/blog/10/javascriptie9_platform_preview_4.html

IE9からはJavaSciptの対応バージョンは最新のECMAScript 5th Edition(ECMAScriptとは、
JavaScriptの基となる仕様の名称)準拠となっているようですが、
IE9 Platform Previewに対するフィードバックにより、ECMAScript 5th Editionの仕様のバグを発見しています。

具体的には、ECMAScript 5th Editionの仕様とそれ以前のECMAScriptで
動作に違いがあることがIE9 Platform Previewにより発見され、
過去との互換性維持のためにECMAScript 5th Editionの仕様のアップデートにつながったとのことです
(詳細は「How IE9 Platform Preview Feedback Changed the JavaScript Standard」参照)。
683デフォルトの名無しさん:2010/08/19(木) 23:39:56
>JavaSciptの対応バージョンは最新のECMAScript 5th Edition準拠
でもJScriptなんでしょ。
MSお得意の仕様には準拠したけど実装は・・・てやつ。

最近はこの手口止めて自分とこの仕様をECMAに投げて標準化してるけどECMAScriptだけは入り込む隙ないからな。
入り込もうとするたびに実装を利用してるコミュニティの猛反発食らってるし。

3Eが形変えただけってのは皆分かってるからなぁ。
684デフォルトの名無しさん:2010/08/22(日) 22:53:57
意味が分からん。標準仕様に完全に準拠してるなら、別にそれ以外の独自拡張をしたっていいじゃん。
それともまさか名前がJavaScriptじゃないことを叩いてんの?
685デフォルトの名無しさん:2010/08/23(月) 20:14:00
なんで独自拡張が混乱の元になるかも分からんゆとりか?
だいたいIEの場合、標準仕様に完全に準拠は絶対にない。
686デフォルトの名無しさん:2010/08/23(月) 22:14:37
独自拡張を全否定したらWEBの発展が見込めないってこともわからんゆとりか。
完全準拠してないならまずそこを穿ってけばいいのに。
687デフォルトの名無しさん:2010/08/23(月) 22:19:42
ecmaの仕様の話するスレで独自拡張布教するなよ。
688デフォルトの名無しさん:2010/08/23(月) 22:21:53
独自拡張に依らないウェブの進化を目指してたXHTML2がこけちゃったもんな
689デフォルトの名無しさん:2010/08/24(火) 10:09:47
つか、WHATWGが「どうせ俺らが実装しなきゃ絵に描いた餅なんだから、
仕様は俺達で作るわ、XHTML使いづれーし」って言って、W3Cが涙目で応じたじゃん?

つまり、MSの独自拡張の時代はずっと前に終わってて、
WHATWGが実装ありきで仕様を作り、W3Cがそれを勧告するっつー流れ。
690デフォルトの名無しさん:2010/08/29(日) 09:14:09
ecmascriptで相互再帰って出来るの?
普通の再帰にフラグを渡してその値で場合分けするみたいな
微妙なやり方しか思いつかないんだけど
691デフォルトの名無しさん:2010/08/30(月) 12:00:01
出来るので頑張ってください。
微妙な実装になるかどうかはあなたのセンス次第です。
692デフォルトの名無しさん:2010/08/30(月) 19:06:37
function f(){
return g();
}

function g(){
return f();
}

あばばばばば。
693デフォルトの名無しさん:2010/08/30(月) 19:55:05
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
694デフォルトの名無しさん:2010/08/31(火) 14:59:13
wikiとか見たけど混乱したんで教えてください

ECMAScript5thがJavaScript1.9で実装されてて(firefox4)
ECMAScript4thがJavaScript2.0(JScript/ActionScript)っていう認識はあってますか?

それとも2009/12に策定されたECMAScript5thのことをJavaScript2.0って呼んでいて
ECMAScript 4thは仕様策定放棄され
JScript/ActionScriptはECMAScript4thの草案を実装してるだけ(JavaScript2.0ではない)なのでしょうか
695デフォルトの名無しさん:2010/08/31(火) 15:46:30
JavaScript2.0はまだ出ていないけど、ECMAScript 5Eを元に策定される予定。
IE9に載るJScriptもECMAScript 5Eを元に策定される予定。

ECMAScript 4Eは公式には存在しない(今後も作られない)。
ただしいくつかの草案があって、それらを元に現在のActionScriptが出来た。
一方現在のJavaScriptやJScriptは4Eの草案やActionScriptとはほぼ別物。

4Eと5Eには互換性がない、けど4Eの機能のいくつかは5Eにも取り込まれた。

こんな感じ
696デフォルトの名無しさん:2010/08/31(火) 16:09:45
>>694
4については、
Adobe, Mozilla <-> Microsoft、その他
って構図で、最後はJavascript創始者のBrendan Eichが、
4放棄の取りまとめをした。
JScript(MS)とActionScript(Adobe)を
同じグループにいれているのは間違い。
4の成否にもっとも激しく対立した二者。
697デフォルトの名無しさん:2010/08/31(火) 17:43:25
wikipediaのECMAScriptのページに、どっちも草案って書いてたから
MS/Adobeの件は激しく勘違いしてました

そして、今はまだJavaScript2.0は出てないんですね
ただ、2.0はECMAScript 5thの仕様ベースになるっていう意味で
javascript2.0を試した、とか
javascript2.0策定完了、とか
そんな記事があるわけか

当初ECMAScript4thの仕様がJavaScript2.0になる予定だったためか?
2006年頃発売なのにJavaScript2.0対応とかいう本もあったりと
2.0の周りは混沌としてますね
698デフォルトの名無しさん:2010/08/31(火) 17:54:23
ついでにもう一個、もし知ってる人いたら教えてください
ECMAScriptの初版(=2版)の仕様策定に関わった人として
敬愛するGLSの名前があるわけですが
JavaScriptの関数がファーストクラスとして使えたのは
ECMAScript策定前からでしょうか?
初版の時点で既に無名関数があるわけですが
彼が原因じゃないかと推測します
699デフォルトの名無しさん:2010/08/31(火) 18:13:18
SteeleはECMAに仕様を出す前に、
仕様を整える役として急遽呼ばれた。
幾つかの言語の仕様を書いて慣れているので。
基本的な部分の設計には全く関わってない。
関数がファーストクラスな言語はそれほど珍しくない。
全てがSteele由来なわけでもない。

ただBrendan EichはブラウザにSchemeを組み込むつもりで、
ネットスケープ社に入社した。諸々も事情で、
プロジェクトを離れている間にC言語風になった。
700デフォルトの名無しさん:2010/08/31(火) 18:41:51
詳しいですね、ありがとうございます
scheme使う人だったんですね
>>プロジェクトを離れている間にC言語風になった。
悲哀を感じます。

そしてそのGLSが呼ばれて整えた仕様書は
crockford曰く「The specification is of extremely poor quality」
悲哀を感じます。

>>関数がファーストクラスな言語はそれほど珍しくない。
>>699はMLだとかmirandaだとかそういう言語を想定してるんだと思いますが
1998年頃一般的に流行ってた言語の中ではすごいことだと思います
今でこそTiobeのトップ20の言語の半分以上はlambda相当のことが出来るけど
701デフォルトの名無しさん:2010/08/31(火) 18:58:15
一般のプログラマは言語なんてほとんど知らないから。
彼らにとって珍しいことが、設計者にとって珍しいってことはない。
702デフォルトの名無しさん:2010/08/31(火) 19:58:04
【レポート】IE9、JavaScript仕様と現実の落としどころ | エンタープライズ | マイコミジャーナル:
http://journal.mycom.co.jp/articles/2010/08/31/ie9-javascript-impl-decision/index.html
703デフォルトの名無しさん:2010/08/31(火) 20:21:53
JavaScriptの定義ってわかり難いよね
広義ではブラウザ上で動くECMAScriptの実装を意味していて、
狭義ではMozillaのECMAScript実装だけを意味するってことでOK?
で、JavaScript2.0ってのはMozillaの実装のバージョンを意味してるんだよね?
704デフォルトの名無しさん:2010/08/31(火) 21:20:22
狭義ではブラウザ上で動くECMAScript実装の内JavaScriptと名乗るものを指し、
広義ではサーバサイドJavaScriptみたいなのも含める感じ

狭義がMozillaの実装だけを指すってことは無いと思う。
705デフォルトの名無しさん:2010/08/31(火) 21:59:45
JavaScriptってのは商標でもあるので、
>>703の言っていることのほうが正しいです。
706デフォルトの名無しさん:2010/08/31(火) 22:09:19
>>703-704
枝葉をつつくようだが、ECMAScriptが制定される前からJavaScriptはあったわけで
そう言い切ると、NN2.0-3.0に載ってるのはJavaScriptじゃないってことになっちまう

JavaScript5版(oreilly)では、ブラウザ上で動くJavaScriptのことを
「クライアントサイドJavaScript」、言語としては「コアJavaScript」と区別して呼んでるね
これは広義の分類にあたりそうだ
707デフォルトの名無しさん:2010/08/31(火) 22:27:29
>ブラウザ上で動くECMAScript実装の内JavaScriptと名乗るもの
javaの名を使うことで提携してんのはNNというかmozillaだけだと思うがいまどうなってんだろうな。
だからMSはJScriptにしたんだし。
708デフォルトの名無しさん:2010/08/31(火) 23:29:13
>>705
>>706と関連するけど、NNの実装はどうなるのさ、と

>>707
http://en.wikipedia.org/wiki/ECMAScript#Dialects
こんな感じで呼ばれてるみたいよ。
709デフォルトの名無しさん:2010/08/31(火) 23:58:59
なんとなく、ECMAScript + W3C DOMのことをJavaScriptと呼んでるようなイメージ。
>>708のウィキペディアの記事にもそんなニュアンスのことが書いてある。
710デフォルトの名無しさん:2010/09/01(水) 08:07:38
歴史的にもクライアントサイドで動的webやるためにDOMを扱えるスクリプト実装したのが
LiveScriptだからECMAScript + W3C DOMのことをJavaScriptと呼ぶのは自然の流れ。
Natscape js1.4で分離されるまでJavaScriptの仕様にDOMが含まれてたんだし。
1.4でJavaScript CoreとDOMに分離された。
711デフォルトの名無しさん:2010/09/01(水) 12:11:48
>>700
Steeleのやったのは文言の訂正とかそんなレベルだよ。
712デフォルトの名無しさん:2010/09/02(木) 16:02:52
IEBlog > Chakra: Interoperability Means More Than Just Standards

・What’s the Real Regular Expression Grammar?
・Why Doesn’t IE9 have those _ _ methods?
・A Malfunctioning Consensus Feature
・So What About const?
・Principled Decision Making

Allen Wirfs-Brock
Microsoft JavaScript Language Architect

http://blogs.msdn.com/b/ie/archive/2010/08/25/chakra-interoperability-means-more-than-just-standards.aspx
713デフォルトの名無しさん:2010/09/02(木) 21:23:06
714デフォルトの名無しさん:2010/09/03(金) 01:49:45
constの挙動とか、以前の版との整合性だけ修正して
Edition 6が割とすぐ出そうな気がするのは俺だけ?
715デフォルトの名無しさん:2010/09/04(土) 01:34:42
・正規表現
errata か、なくてもいいんじゃ
・__*__ methods
元から範囲の外
・文内の関数位置
確か、ES5 で IE と同じ挙動にしたはずでは…途中でやめたか?
・const
ES5 には元から入っとらんわ
716デフォルトの名無しさん:2010/09/08(水) 17:06:48
>>715
>・const
>ES5 には元から入っとらんわ

つまり今constをサポートしてるブラウザは
規格に入ってない機能を勝手に独自実装してる欠陥品って事か
欠陥品じゃないって言うならIEの独自機能も認めないとおかしい
717デフォルトの名無しさん:2010/09/08(水) 17:16:54
規格に入ってる機能を実装してない欠陥品よりマシ
718デフォルトの名無しさん:2010/09/08(水) 18:10:47
今ある全てのブラウザが欠陥品ってこと?
全部実装してるブラウザはいまのところ存在しないんだけど
719デフォルトの名無しさん:2010/09/08(水) 18:21:00
>>717は「MSが駄目って指摘できるボクちゃんカッケーww」って
勘違いしちゃってる馬鹿
720デフォルトの名無しさん:2010/09/08(水) 19:32:40
独自実装と先行実装だったら、後者のほうがましだなあ、と。
721デフォルトの名無しさん:2010/09/08(水) 20:36:37
つまりXMLHttpRequestを最初に実装したIEは偉大
722デフォルトの名無しさん:2010/09/08(水) 22:36:31
IE信者のプロパガンダにしか見えん。

constも例外処理も勝手に追加したのはspidermonkeyだがこれらがあると欠陥とな?
ブラウザ戦争の引き金になる糞互換な実装をやめろって話なのが分からんのか。

webkitとかwebkitとかwebkitとか
723デフォルトの名無しさん:2010/09/08(水) 23:51:06
constについては、constの仕様が不確定なことと、
このような機構が将来仕様に含まれるとしても、
今のconstのようなものになるか不確定であること、
この二点を採用しない理由に挙げてるけど、
constってのはObjectの性質じゃなくて、
変数の性質だから、他の方法なんてないんじゃないの?
724デフォルトの名無しさん:2010/09/08(水) 23:58:47
たとえば同じ名前の変数にconst指定した場合、ブラウザによって次のように別々の動作をみせるという。

* シンタックスエラーとみなしローディングを実施しない。
* 関数がコールされた段階で例外を発生する。
* 定数の上書きは成功し、変数としての上書きは処理しない。
* ただの変数として処理する。
725デフォルトの名無しさん:2010/09/09(木) 06:59:32
IE以外のどのブラウザもそれなりにECMAScriptの独自拡張はしてるって話だろ?
実際、constの挙動がバラバラなんだし。これを先行実装と言い張るのはなあ
726デフォルトの名無しさん:2010/09/09(木) 12:56:28
constよりletほしい。
727デフォルトの名無しさん:2010/09/09(木) 15:37:18
式クロージャも欲しい
728デフォルトの名無しさん:2010/09/09(木) 15:45:29
いらん
729デフォルトの名無しさん:2010/09/09(木) 16:21:06
ネイティブにコンパイルできるようにならないのかな
PHPをC++にコンパイルするやつはあったな
730デフォルトの名無しさん:2010/09/09(木) 16:43:02
>>729
すでに主流のブラウザに搭載されているJSエンジンは、JIT(Just In Time compile)化されていたはず。
少なくともFirefoxのSpidermonkeyは、JIT化によって大きな性能改善を果たした。
731デフォルトの名無しさん:2010/09/09(木) 21:57:02
FirefoxもChromeもコード生成に実行時情報使うからAOTでコンパイルするのはつらいな。
ネイティブコードにはなるだろうが実行性能的な意味で。
732デフォルトの名無しさん:2010/09/09(木) 22:45:26
できてせいぜい中間コードまでだろうなあ
733デフォルトの名無しさん:2010/09/09(木) 23:48:32
中間コードにはコンパイルできなきゃ困るだろ・・・
734デフォルトの名無しさん:2010/09/10(金) 10:14:54
>>732
V8のコード読めばいろいろ参考になるよ
SpiderMonkeyよりかは読みやすいし

>>726
これは同意
ブロックスコープ使いたいお・・・
735デフォルトの名無しさん:2010/09/10(金) 10:56:58
letもいいけど分割代入も欲しい
736デフォルトの名無しさん:2010/09/14(火) 07:12:45
json形式のデータでlistと配列(vector)区別する一般的な方法はないのでしょうか?

list
[1,2,3]

vector
{vector:[1,2,3]}

とかでいいのでしょうか?
737デフォルトの名無しさん:2010/09/14(火) 12:36:02
ベクターとか本当に必要か?
738デフォルトの名無しさん:2010/09/14(火) 13:53:11
jsonてここでいいのか?
739デフォルトの名無しさん:2010/09/14(火) 14:00:52
枝葉末節だけどJSON形式ならキーを文字列にしないといけない
740デフォルトの名無しさん:2010/09/14(火) 14:12:07
まあJSOということで
741デフォルトの名無しさん:2010/09/14(火) 14:45:25
それってただのJSじゃね
742デフォルトの名無しさん:2010/09/15(水) 01:06:29
JSObjectなら
743デフォルトの名無しさん:2010/09/22(水) 20:40:11
JavaScript for Internet Explorer 9 Beta
http://msdn.microsoft.com/en-us/library/d1et7k7c(v=VS.94).aspx

IE9はJScriptじゃないの?
744デフォルトの名無しさん:2010/09/22(水) 22:18:28
いまのjavascriptは製品名よりブラウザ上の言語名として一般にも普及してるからjavascriptを使うんだろう。
745デフォルトの名無しさん:2010/09/22(水) 22:24:31
MSも丸くなったというか下り坂というか
746デフォルトの名無しさん:2010/10/03(日) 17:01:05
ECMAScript 5 compatibility table
http://kangax.github.com/es5-compat-table/

Strictモードのスルーされっぷりは異常
747デフォルトの名無しさん:2010/10/03(日) 23:09:05
strict は部分的には入ってる
一括して一項目だとな…セキュリティとしてはフルサポートしないとまずいんだけど
748デフォルトの名無しさん:2010/10/06(水) 00:03:34
ActionScript3.0が対応してるECMA262ってこれであってますか?
ttp://www.ecmascript.org/es4/spec/overview.pdf
749デフォルトの名無しさん:2010/10/14(木) 23:36:40
>>746
ようやくWebKit Nightly BuildとMinefieldでグリーンになった
750デフォルトの名無しさん:2010/10/15(金) 10:06:23
>>746
>>749
今 mozilla-central 20101014041748 で見たら全部の項目がグリーンになっててビビった
Chrome の Canary build とか Chromium だとどうなんだろ(表には7までしかない)
751デフォルトの名無しさん:2010/10/16(土) 00:06:47
>>750
カナリアも今のところChrome 7と同じ。
WebKit本体のJavaScriptエンジン(JavaScriptCore)はstrictモード対応したけど
Chromeは独自のJavaScriptエンジン(V8)を使っているので恩恵を受けていない。
その代わりJavaScriptCoreが未対応のObject.*の類をサポートしてる
752デフォルトの名無しさん:2010/10/16(土) 00:18:41
あとMinefieldはstrict mode evalに未対応なので
evalを使ってるコードではまだ"use strict";しないかWebKitでもテストしたほうがいい
https://bugzilla.mozilla.org/show_bug.cgi?id=514568
753デフォルトの名無しさん:2011/02/21(月) 05:18:33.75
SubKlass.prototype に直接値を代入せずに Klass.prototype を継承したオブジェクトが作りたい
具体的には、
const Klass = function() {};
Object.defineProperties(Klass.prototype, {...});
const SubKlass = function() {};
SubKlass.prototype.__proto__ = Klass.prototype;
みたいなことをやりたいんだけど、これってES5標準の範疇では不可能?
754デフォルトの名無しさん:2011/02/21(月) 07:45:40.04
Object.create(Klass.prototype)
755デフォルトの名無しさん:2011/02/21(月) 07:48:36.45
4ヵ月書き込みがなかった間にMinefieldがstrict mode evalに対応したようだ
756デフォルトの名無しさん:2011/02/21(月) 07:52:51.09
>>753
むしろconstがES5的に不可能
var Klass = function() {};
Object.defineProperties(Klass.prototype, {...});
Object.freeze(Klass);
757デフォルトの名無しさん:2011/02/21(月) 08:15:26.09
>>755
Chromium(V8)の最新版もstrict modeに部分対応始めたし
あとはIE9さえ対応すれば完璧だな

Opera? Safari? 何それおいしいの
758デフォルトの名無しさん:2011/02/21(月) 22:04:21.88
Safariはバージョンアップ遅いけど
WebKit Nightly BuildならもうかなりES5 strictに対応してるよ
759デフォルトの名無しさん:2011/02/22(火) 03:03:54.10
>>754
SubKlass.prototype = Object.create(Klass.prototype);
すればできるのは分かるのですが、SubKlass.prototypeに元からあったプロパティは消えちゃいますよね。
この元からあったプロパティを残しつつ継承したいんです

>>756
constはつい癖で付けてしまいました。
Object.defineProperties(SubKlass.prototype, {
 property descriptors of Klass.prototype
})
だと
SubKlass.prototype.__proto__ !== Klass.prototype
になりますよね
760デフォルトの名無しさん:2011/02/23(水) 05:11:49.13
多重継承?
761デフォルトの名無しさん:2011/04/01(金) 19:30:12.58
strictモードで
function f(){
this.a = 45;
}
が出来なくなるのはただの劣化だと思うんだ。なんで元に戻したの?
762デフォルトの名無しさん:2011/04/01(金) 22:53:16.39
strictなんだからできなくて当然と思うけど
それともnew忘れてるとか?
763デフォルトの名無しさん:2011/04/09(土) 09:17:07.08
Property Descriptorってのは特殊なJSONっていう理解でいいの?
764デフォルトの名無しさん:2011/04/09(土) 19:14:44.53
ここまで合ってるところがひとつもない文だとかえって直しようがない
765デフォルトの名無しさん:2011/04/29(金) 22:28:49.48
IEで自分(パーツ)用のスタイルを設定したい場合にaddRuleを使ってたんだけど
IE8以降の標準モードではなぜか動かなくなってるような?
入れ物はできるけど中身が空になってる(.box{}みたいな感じ)。
そーいやChromeのダミーのaddRuleがそっくりの動作をしてたなと。

試してたソースはこれ。

if ( document.createStyleSheet ){
var myCSS =document.createStyleSheet();
myCSS.addRule( '.box', '{background-color: #f0f0f0;}' );
myCSS.addRule( '.box', '{border: 2px solid #aaaaaa;}' );
}

元のソースはIE以外にも対応するためにinsertRuleも使ってるんだけど
症状を確認するために極限まで削ってこれだけにしたのです。
(元のソースはcreateStyleSheetも使ってません)

IE8でモードを切り替えながらCSSを見てたけど
互換モードとIE7標準モードでは設定されるけどIE8標準では設定されない。
IE6やIE7ならモードに関係なく設定される。
IE9もIE9標準モードでは設定されないけどinsertRuleが使える。
(IE9標準モード以外はIE8と同じ)

ここまで重大な変更をしてると大きな問題になりそうな気がするけど
ググっても言及してるところが見当たらない。
何か基本的なところで勘違いをしてるのでしょうか?
766デフォルトの名無しさん:2011/04/30(土) 08:54:13.95
myCSS.addRule( '.box', 'background-color: #f0f0f0;' );
myCSS.addRule( '.box', 'border: 2px solid #aaaaaa;' );
767デフォルトの名無しさん:2011/04/30(土) 08:55:40.26
思わず答えちゃったけどECMAScript関係なくね?
768デフォルトの名無しさん:2011/04/30(土) 14:48:24.99
関係ないよね
JavaScriptスレに行ったら?
769デフォルトの名無しさん:2011/04/30(土) 17:39:12.00
JavaScriptとも関係ない気がするけど
Web制作板のJavaScriptスレはDOMの質問も扱っているようだ
770デフォルトの名無しさん:2011/05/01(日) 11:23:34.55
仲良くしようよ(´・ω・`)
771デフォルトの名無しさん:2011/05/01(日) 11:40:42.56
ECMAScript + DOM = JavaScript だからなあ。
DOMのこと聞けなかったらJavaScriptじゃなくてECMAScriptだ。
772デフォルトの名無しさん:2011/05/01(日) 17:36:59.89
最近じゃそこにHTML5周辺のAPIも混ざってきて混沌としているがな
773デフォルトの名無しさん:2011/05/02(月) 06:30:41.36
>>771
釣りなのか?
ECMAScript + Netscape独自拡張 = JavaScript
WSHやサーバーサイドJSやSpiderMonkeyのシェルやRhinoはJavaScriptじゃないとでも?
774デフォルトの名無しさん:2011/05/02(月) 06:37:32.32
WSH上で動くのはJScriptだな
ECMAScript + Microsoft独自拡張 = JScript
断じてECMAScript + IEのDOMではない
775デフォルトの名無しさん:2011/05/02(月) 06:45:29.37
ECMAScriptの解説書はなんで出ないんだろうか
776デフォルトの名無しさん:2011/05/02(月) 11:20:41.14
The Good PartsはECMAScriptの解説みたいなもんだったが…

ES5の解説本が出てもいいと思うが、
wikipedia(ja)も放置状態だし、関心のある人は少ないのでは?
777デフォルトの名無しさん:2011/05/02(月) 13:13:45.40
サイ本で十分役割を果たしてる
778デフォルトの名無しさん:2011/05/02(月) 14:00:23.06
Web寄りすぎるだろ。
779デフォルトの名無しさん:2011/05/03(火) 03:58:52.39
そろそろデスクトップ方面に注目した総括的な書籍が出て欲しいなあ
ネタ的には十分揃ってると思うんだけど

Titanium : http://www.appcelerator.com/
DashCode : http://www.apple.com/macosx/developers/#dashcode
Chromeless : http://mozillalabs.com/chromeless
XULRunner : https://developer.mozilla.org/ja/XULRunner
Google Desktop Gadgets : http://desktop.google.com/plugins
Yahoo! Widgets : http://widgets.yahoo.co.jp/
Adobe Air : http://www.adobe.com/jp/products/air/
QML : http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html
Windows Scripting Host : http://support.microsoft.com/kb/232211

CommonJS : http://www.commonjs.org/
780デフォルトの名無しさん:2011/05/03(火) 06:55:35.87
WSHはもう互換性のためだけに提供されてる状態だった気がする
781デフォルトの名無しさん:2011/05/03(火) 12:51:35.86
JScript9の新機能(ES5対応とか)はIE9の中でしか使えないんだっけ
782765:2011/05/03(火) 18:05:18.66
質問するところ間違えてしまったようですまない。
そして答えてくれてありがとう。
あまりに単純な原因に衝撃を受けたよ……カッコが原因だったとは。
間違ってたのに今まで運良く動いてただけか(よくあることだけど)。
最初に見たソースがカッコがついててそれを参考にしたみたいです。
さっきあちこち見てまわったらつけてる人とつけてない人がいるね。
783デフォルトの名無しさん:2011/05/03(火) 18:34:49.88
これ、IE版firebugで見つけられるんじゃない?
784デフォルトの名無しさん:2011/05/04(水) 18:53:34.21
>>770
仲良くしてたらDOMの質問が際限なく来て始末に負えなくなるから、そこらへんは線引きしとかんと
そのために2代目スレからは名前変わってるんだし
785デフォルトの名無しさん:2011/05/04(水) 21:00:16.42
これ Traceur のドキュメントだけど、Class ってそんなに欲しいかな・・・

http://code.google.com/p/traceur-compiler/wiki/LanguageFeatures
786デフォルトの名無しさん:2011/05/04(水) 22:01:33.11
あったら積極的に使うと思うがなくても(現状でも)そんなに困らない
787デフォルトの名無しさん:2011/05/08(日) 23:40:24.75
CoffeeScriptってどうよ
http://jashkenas.github.com/coffee-script/
俺はjsの方が好きだが
788デフォルトの名無しさん:2011/05/09(月) 01:28:22.57
>>787
Objectの書き方がどうも
改行やインデントが意味を持つのは馴染めんなあ
JSに慣れきってるせいかも知れないけど


song = ["do", "re", "mi", "fa", "so"]

singers = {Jagger: "Rock", Elvis: "Roll"}

bitlist = [
  1, 0, 1
  0, 0, 1
  1, 1, 0
]

kids =
  brother:
    name: "Max"
    age: 11
  sister:
    name: "Ida"
    age: 9
789デフォルトの名無しさん:2011/05/09(月) 19:50:07.60
ES HarmonyはES4で一度挫折した構文の大幅変更に再チャレンジするみたいだな
790デフォルトの名無しさん:2011/05/10(火) 23:41:18.49
ECMAScript は Java の構文を意識したところがよかったのに
791デフォルトの名無しさん:2011/05/11(水) 00:20:45.95
>>789
harmony:modulesのこと?
792デフォルトの名無しさん:2011/05/11(水) 02:05:04.43
>>790
意味もなくJavaのキーワードが予約されてたりな
793デフォルトの名無しさん:2011/05/11(水) 08:25:51.48
兎にも角にも名前空間をどうにかしてくだしあ
794デフォルトの名無しさん:2011/05/13(金) 01:49:36.82
var MyPackage = {};
MyPackage.foo = bar;

みたいな感じで良いじゃん
795デフォルトの名無しさん:2011/05/25(水) 20:50:28.06
ブロックスコープないとクロージャが使いにくい
796デフォルトの名無しさん:2011/05/25(水) 21:26:54.08
いずれ let が使えるようになるからそれまで待つしか
797デフォルトの名無しさん:2011/05/30(月) 14:32:48.39
ESで使われていない主な半角記号でこれから自由に新定義できそうなのって『#』くらいだよね
でも#ってfunction文の意味を持たせる案が有力なんだよね

そういえば無知な質問するけど
ESって全角記号使えるけど、海外の環境じゃあ全角って普通全く打てないものなの?
☆くらいは使えたりするのかな?
せっかく使えるようにしてくれてるんだし、使えるんならどんどん使っていきたいよね
ある程度ちゃんと使えば絶対良くなると思うんだ
798デフォルトの名無しさん:2011/05/30(月) 14:36:08.11
どうぞご勝手に
799デフォルトの名無しさん:2011/05/30(月) 15:39:05.07
>>797
APLみたいにとまではいかなくても、
Unicodeにたくさんある演算記号が使えたら面白いかもね。
800デフォルトの名無しさん:2011/05/30(月) 15:51:10.32
>>797
入力を心配する前にフォントの心配をしなきゃ
見えなきゃ打ててもしょうがない
801デフォルトの名無しさん:2011/06/01(水) 00:56:34.23
SpiderMonkeyが#を独自拡張に使ってるから避けてたんじゃないのか
802デフォルトの名無しさん:2011/06/01(水) 01:25:43.79
シャープ変数なんて使ったこともないし見たこともねえぞ・・・何だこれ
803デフォルトの名無しさん:2011/06/11(土) 16:11:51.19
804デフォルトの名無しさん:2011/06/11(土) 16:16:18.52
JVMのHotspot Engineもまったく同じような宣伝文句を使ってたよな。
時代は繰り返すにしてもちょっとスパンが短すぎやしないか
ドッグイヤー換算だと100年くらい前の話ではあるが
805デフォルトの名無しさん:2011/06/11(土) 20:02:44.28
あとGCCでは関数が同じファイル内にあれば
> unsigned int g (void) { return 1; }
にまで最適化されますが何か? って指摘は意外と本質的で、
ECMAScriptではvalueOfなどをユーザー定義される可能性がある限り
同じような最適化はやりたくてもできない。
IE9のPreview版がはやまって導入したらMozillaの中の人から
速攻で突っ込まれたということもあったな。
806デフォルトの名無しさん:2011/06/12(日) 02:06:42.57
>>805
> unsigned int g (void) { return 1; }
> にまで最適化されますが何か?

ret += 1; にまでと言いたいの?
807デフォルトの名無しさん:2011/06/12(日) 04:14:11.60
>>806
知らん。リンク先に聞いてくれ
808デフォルトの名無しさん:2011/06/12(日) 10:18:21.73
リンク先はそう書いてない。
809デフォルトの名無しさん:2011/06/14(火) 01:54:57.27
valueOf(){return this; }は遅延評価に必須だからなぁw
810デフォルトの名無しさん:2011/06/14(火) 07:41:58.63
811デフォルトの名無しさん:2011/06/17(金) 02:58:48.69
テストのない8000行のJavaScriptを引き継いで、
一ヶ月程度でバグ修正と機能追加をしないといけないんだがどうしよう。死ぬの?
812デフォルトの名無しさん:2011/06/17(金) 03:00:44.67
テストコードもないようなその品質も引き継げばいい。
813デフォルトの名無しさん:2011/06/17(金) 16:26:16.65
久々にecmascript.orgみたら、
結構多くの機能が仕様取り込み候補になってるんだな。
814デフォルトの名無しさん:2011/06/18(土) 00:30:13.99
やっぱり module が入るのは嬉しいね
まだ strawman だけど
815デフォルトの名無しさん:2011/06/18(土) 00:42:02.38
816デフォルトの名無しさん:2011/06/19(日) 02:35:04.00
817デフォルトの名無しさん:2011/06/22(水) 22:32:05.07
818デフォルトの名無しさん:2011/06/24(金) 20:25:27.00
819デフォルトの名無しさん:2011/06/26(日) 18:05:52.19
>>779
jrunscript(Rhino)とJavaScript-Cも仲間に入れてつかーさい。
820デフォルトの名無しさん:2011/07/02(土) 05:47:33.39
ISO/IEC and Ecma International ratify “ES5.1”, the latest ECMAScript specification of Ecma International | EON: Enhanced Online News
ttp://eon.businesswire.com/news/eon/20110630006619/en/Ecma-International/ECMAScript-5.1/Javascript

Standard ECMA-262
http://www.ecma-international.org/publications/standards/Ecma-262.htm

5.1出てたー
821デフォルトの名無しさん:2011/07/05(火) 21:49:39.02
822デフォルトの名無しさん:2011/07/10(日) 02:40:18.27
823デフォルトの名無しさん:2011/07/10(日) 10:26:08.62
Test 262 でブラウザの JavaScript 互換性をテストする
http://www.infoq.com/jp/news/2011/07/Test-262
824デフォルトの名無しさん:2011/07/15(金) 02:32:54.41
http://addyosmani.com/resources/essentialjsdesignpatterns/book/

デザパタ信者は好きになれないけど、共通言語としての価値はあると思う
825デフォルトの名無しさん:2011/07/18(月) 20:54:00.65
Bruce Eckel の Blog に JavaScript の話題が出てた

http://www.artima.com/weblogs/viewpost.jsp?thread=329840
826デフォルトの名無しさん:2011/07/23(土) 05:53:39.82
>>819
jrunscriptとrhinoを一緒にするでねぇ。あれは実装が違う。
827デフォルトの名無しさん:2011/07/23(土) 06:20:03.93
828デフォルトの名無しさん:2011/08/12(金) 11:29:56.94
シンプルなポーカー ゲームで理解する ECMAScript 5
http://blogs.msdn.com/b/ie_jp/archive/2011/08/10/10194385.aspx
829デフォルトの名無しさん:2011/08/25(木) 13:03:31.28
>>746
Operaやる気ないの?
10.50から全然変わってないじゃん
830デフォルトの名無しさん:2011/08/28(日) 12:20:09.84
Firefox 4、Safari 5.1、Chrome 13にIE10さえ完全対応しそうなのに
Operaのやる気のなさは異常
831デフォルトの名無しさん:2011/08/28(日) 22:19:22.13
http://hibari.2ch.net/test/read.cgi/tech/1314333133/
JavaScriptスレというのができてるな
関連スレにJava関係を載せてるあたりネタ臭もするが
832デフォルトの名無しさん:2011/08/28(日) 23:11:20.39
es5とStrict-modeならRhinoですら実装したというのに。
833デフォルトの名無しさん:2011/08/29(月) 23:10:05.91
このスレとJavaScriptスレは普通に共存できる、というかJavaScriptスレが
穢れを一手に引き受けてくれるから問題ナッシング。
834デフォルトの名無しさん:2011/09/08(木) 17:27:09.77
operaは昔から最低限のものだけ実装するよってスタンスだし今後もこんなもんだろう
835デフォルトの名無しさん:2011/09/09(金) 03:26:16.65
質問なのですが、JavaScriptで変数のスコープって
関数以外の区切りがありますか?
例外的な変数のスコープの区切りになるものがありましたら
教えていただければ幸いです。
836デフォルトの名無しさん:2011/09/09(金) 03:58:41.13
catchの変数はcatch節の中だけだったと思う
837デフォルトの名無しさん:2011/09/09(金) 17:45:29.02
let! let!
838デフォルトの名無しさん:2011/09/10(土) 15:54:18.51
>>836
ES規定ではそうだけど、IE8- はバグ持ちなので注意
839デフォルトの名無しさん:2011/09/10(土) 17:43:02.27
お前らwithさんのことディスってんじゃねーよw
840デフォルトの名無しさん:2011/09/10(土) 19:54:03.14
withマジで役に立たない
名前空間がクソすぎるのを隠蔽できないゴミ
841デフォルトの名無しさん:2011/09/11(日) 00:29:14.62
ed3から非推奨で5から存在しないんじゃなかったか?
842デフォルトの名無しさん:2011/09/11(日) 08:39:32.57
いつになったらletが気兼ねなく使えるようになるのか
843デフォルトの名無しさん:2011/09/11(日) 08:57:26.80
>>841
5のstrict modeで使えなくなる
844デフォルトの名無しさん:2011/09/11(日) 19:21:17.81
>>842
すべてのブラウザがjs17を実装したら。operaとIEが存在する以上まず無理だな。
845デフォルトの名無しさん:2011/09/12(月) 00:59:49.68
>>842
ES6
846デフォルトの名無しさん:2011/09/12(月) 03:46:17.82
>すべてのブラウザがjs17を実装したら
すべてのブラウザのJavaScriptエンジンがSpiderMonkeyになったらと言っているようなものだな。
847デフォルトの名無しさん:2011/09/13(火) 02:39:21.61
>>846
標準化されてない機能がほしいっていう意見は現実的にはSpiderMonkeyと同じ実装が欲しいと言ってるのと同じじゃね?
mozillaのjsは先行実装なのに仕様が頓挫しただけだから元々入れる予定だったんだし。
getter/setterだって取り込まれたし例外処理が標準化してる今mozillaオリジナルってLiveConnectくらいだぞ。
SpiderMonkeyの機能にV8のJITが理想に近いのは誰でも思うところだろう。
848デフォルトの名無しさん:2011/09/13(火) 15:06:45.78
例外がちゃんと入ってよかったねえ。
849デフォルトの名無しさん:2011/09/13(火) 18:15:30.15
分割代入と式クロージャーの使えないJSエンジンに価値はない
850デフォルトの名無しさん:2011/09/13(火) 18:32:38.70
>>849
> 分割代入

for文とか発散しすぎて、5年前から何も進んでないw
http://wiki.ecmascript.org/doku.php?id=proposals:destructuring_assignment
http://wiki.ecmascript.org/doku.php?id=discussion:destructuring_assignment

代入式と実引数渡しだけでいいから仕様にしてくれないかなあ…
851デフォルトの名無しさん:2011/09/13(火) 18:51:24.80
>>850
こうやってみると結構月日を重ねたあれやこれやの経緯がとか
重い偲ばれて…esmascriptも色々なんですな…
852デフォルトの名無しさん:2011/09/13(火) 18:56:02.44
多値返すケースとかそれをどう受けるとか
その辺言語によってまちまちだし…しょうがない面もあるか…
853デフォルトの名無しさん:2011/09/13(火) 19:27:10.51
リストを多値に流用というか、混同している言語は悲惨だね。
ちゃんとリフトしないと。
854デフォルトの名無しさん:2011/09/14(水) 04:02:34.66
リストやタプルや酷いときは連想配列から取り出す作業が無くなるだけでも多値の分割代入は重要だしな。
正直イテレータ・ジェネレータ、yieldはとっとと普及しろと思う。何年も前の水準のコードをいつまで書かなきゃいけなんだ。
855デフォルトの名無しさん:2011/09/14(水) 05:21:20.71
>>844
                     /ヽ、__
           _,, -──- ....__ //`ー∠
       ,...."´:::::::::::::::__/_:::::::::ヽ!_/ヽ>
     ./:::::::::::::::::::::::::( / )::::::(@))__rイ   スッ
     〈::::::::::::::::::::::::::::::::゙゙/ ̄:::::ヽ(@@)i \
     ヽ,.'´ ̄` 7´  ̄ ̄ ´ ̄``ヽ::::::::;ヽ ヽ
      /    / /!      `ヽ  ヽ::/ヽ! ノ          Full ECMAScript (JavaScript) 5.1 support
      / //   { / { ト、 |  }ハ 、 ヽ|/          http://my.opera.com/desktopteam/blog/2011/09/13/es5
       |l{ { | ∧{ ヽ.{‐ヽト、ノ}ノハ   ! !
     lハハlヽ{_,.. `  、.__   リ.ハl  | |___________
      | ハ. (ヒ_]     ヒ_ン ) !  l  | |    /
    / ヽヘノ"" ,____,  ""  |  |  | l   /
  /   ハ {             }  }  j/ /
   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
856デフォルトの名無しさん:2011/09/14(水) 06:13:28.06
>reporting one error

現時点で最優秀の準拠率なんだろうけど
せっかくなんだからひとつしかないエラーをデバッグしてから
Full supportって言えよw
857デフォルトの名無しさん:2011/09/14(水) 13:43:35.05
>>856
「S11.1.1_A2, is invalid.」
http://my.opera.com/desktopteam/blog/2011/09/13/es5

テスト自体が間違っているので、failedであってる
858デフォルトの名無しさん:2011/09/14(水) 23:35:44.92
スタンドアロンなblockの中でlet使う意義がわからん。
letは暗黙なブロックを生成するんだからスタンドアロンなblockの中で定義したら見た目とスコープが一致しなくなってわかりにくいんじゃないの?
let文じゃダメなのか?
859デフォルトの名無しさん:2011/09/15(木) 10:56:16.49
見た目とスコープは一致しているし、(むしろそのためのlet)
ECMAScriptには明示的なスコープブロックがないんだからあれば便利。
860デフォルトの名無しさん:2011/09/16(金) 23:44:20.46
letの右辺は暗黙のブロックの中だからvar x=10; {let x=x;}でLexical EnvironmentのxからVariable Environmentのxが
参照できないからThisBindingしなきゃいけないのはecmascriptだけの特殊事情だから予測され得る見た目と一致してない。
let文ならvar x=10; let(x=x){};で済むからThisBindingを念頭におく必要はなくて特殊事情知らなくても予測可能だろ。
わざわざecmascriptの仕様に精通してなきゃわからない見た目と結果の乖離を起こすくらいならはじめからlet文でいいんじゃないか?
今流行でjavascript書いてる連中なんてコンテキストと環境の関係なんて理解してないのが多いだろ。
861デフォルトの名無しさん:2011/09/17(土) 01:11:02.16
そういうのが欲しければlabels文とかletrec文って呼んで新しく提案しろよ
実装ひとつもないのに無茶言い過ぎ
862デフォルトの名無しさん:2011/09/17(土) 04:07:33.84
明示的にvar/externしないとグローバル変数にならない、と
逆にするだけでもずいぶん助かる

既存のコードは全滅だが
863デフォルトの名無しさん:2011/09/17(土) 09:46:53.34
>>861
実装がひとつもないってなんの話だ?
864デフォルトの名無しさん:2011/09/19(月) 17:28:11.50
let文
865デフォルトの名無しさん:2011/09/20(火) 01:46:59.46
>>862
strict modeなら何も書かない場合勝手にグローバル変数生成しないで
エラーになるでしょ
866デフォルトの名無しさん:2011/09/21(水) 07:41:38.28
>>864
let文の実装ならあるじゃん。
867デフォルトの名無しさん:2011/09/21(水) 08:26:59.72
868デフォルトの名無しさん:2011/09/22(木) 15:50:36.46
JavaScriptに並列処理機能を追加する、IntelのJavaScript拡張機能が明らかに
http://www.infoq.com/jp/news/2011/09/javascript-parallel-processing
869デフォルトの名無しさん:2011/09/28(水) 19:19:52.60
パーフェクトJavaScriptって本どうすか?
870デフォルトの名無しさん:2011/09/28(水) 21:37:36.84
javascriptスレで聞け
871デフォルトの名無しさん:2011/10/02(日) 01:08:40.83
ECMAScript5はIE8を搭載したWindows7のサポートが切れる2020年までは絵に描いた餅かな
悲しいけどこれが現実なのよね
872デフォルトの名無しさん:2011/10/02(日) 09:00:08.70
クロスブラウザする必要ない場面ならそうでもなくね
ブラウザー拡張、node.jsとか
あとはUA判別後に部分的にES5の機能を利用するとか
873デフォルトの名無しさん:2011/10/02(日) 12:16:11.33
node.js は windows じゃ npm とか 外部ライブラリが利用できないです
https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-%28Windows%29
>Last edited by dobesv, September 19, 2011

そこで cgwin ですよ cgwinと。
874デフォルトの名無しさん:2011/10/02(日) 12:27:13.98
cygwin?
875デフォルトの名無しさん:2011/10/02(日) 14:00:03.72
dmonkey script とか昔からあるよね
互換実装なら…
876デフォルトの名無しさん:2011/10/03(月) 23:04:46.79
>>871
だから後方互換性なんか無視して理想言語を仕上げりゃ良かったんだ
足を引っ張るのはいつも現実を見てない自称「現実派」
877デフォルトの名無しさん:2011/10/04(火) 01:11:54.16
そのうちVMだけ標準化してコンパイルしたILを走らせるようになると夢想
878デフォルトの名無しさん:2011/10/04(火) 01:22:55.40
理想言語ならすでにSchemeがあるだろう?
879デフォルトの名無しさん:2011/10/04(火) 20:45:36.00
>>876
ES4ゴリ押しした連中こそ現実見てなかっただろ
880デフォルトの名無しさん:2011/10/04(火) 20:47:46.34
その頃には76バージョンのIEのサポートが必要になったりして
クロスブラウザは破綻してるよ
http://paulirish.com/2011/browser-market-pollution-iex-is-the-new-ie6/
881デフォルトの名無しさん:2011/10/04(火) 22:22:25.03
>>879
ES4は中途半端なJavaって印象があるから理想とは程遠かったんだよきっと
882デフォルトの名無しさん:2011/10/05(水) 19:45:55.37
>>876-878
ボブ「そんなあなたに持って来いのRhinoを今回ご紹介。
JavaVMで走りjavaの資産も使えjavascript自身の手続き、OOP、関数型パラダイムに加えてなんと継続までサポート!」
パトリシア「でもV8みたいに言語仕様が古いんでしょ?」
ボブ「お〜パット、そんな心配は無用さ。Rhinoを開発してるのはmozilla。本家本元js1.8まで対応さこれで安心だろ?」
パトシリア「まあ!それはすごいわボブっ!それならyeildすらなくてイライラすることもないわね!」
ボブ「そうさパット!これでフィボナッチ数列もたったの数行で書けるよ。ロジックに集中できて便利だろ。
それにね・・・このLiveConnect、LC3っていうんだけど、なんとJavaとシームレスに通信ができるからJavaの資産が使い放題なんだ!」
パトリシア「わ〜お!それはびっくりね」
ボブ「ちょと待ってパット。今ならなんとRhinoにしかない継続までサポートされているんだ!」
パトリシア「どういうことボブ・・・え〜とそれはつまり、プリエンプティブ・マルチタスクが自分で実装できるってことかしら?」
ボブ「プリエンプティブ・マルチタスク?そうさパット。マルチタスクだって例外処理だって自分で実装できちゃうすぐれものだよ!」
パトリシア「あぁ〜ちょっと、どうしようかしら・・・。でもボブ、そんなに至れり尽くせりだったらお値段がちょっと高めなんじゃない?」
ボブ「そう来ると思ったよパット。なんとこのRhino、mozilla開発でモダンなコードも書けて継続まであってこの値段なんだ!」

 ち ょ っ と お 待 ち く だ さ い ! !

yeildが書けて継続まであるRhino。実はこれだけじゃないんです!

今ならなんとE4XとAOTコンパイルが出来るコンパイラ、GUIデバッガがついてお値段なんと!

ボブ「オープンソースにつきタダ!」
パトリシア「タダ?ほんとにタダなのボブ!?」
ボブ「そうさpricelessさ!」
パトリシア「まあ!今すぐダウンロードしに行かなくっちゃッ」
ボブ「お〜と、ひとつだけいいかいパット?WWWへの接続料は自分で持ってね。なに、ほんのチップがわりみたいなもんさ。だってそうだろ?」
パトリシア「まあ、ボブったら」
ボブ「HAHAHAHAHAHA」
883デフォルトの名無しさん:2011/10/05(水) 20:04:41.64
> ボブ「そうさpricelessさ!」
タダほど高いものはない
ってことですかボブ
884デフォルトの名無しさん:2011/10/05(水) 20:56:31.37
LispやPython使ったらええがなって思います
885デフォルトの名無しさん:2011/10/05(水) 21:09:43.30
>>883
マジレスしていいのか。
それと「アメリカの通販番組はpricelessly」とかけてる。
MCのCMがpricelessで〆てたからさHAHAHA
886デフォルトの名無しさん:2011/10/05(水) 21:24:54.55
>884
CommonLisp/SchemeはとっつきにくいしPythonは標準規格がない
よし、ここはRubyをだな……
887デフォルトの名無しさん:2011/10/05(水) 21:37:50.00
pythonに標準規格がないとかいう文句初めて見たわ
888デフォルトの名無しさん:2011/10/05(水) 22:09:24.59
2004年のものだけど。

WHY Common Lisp?
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/why-lisp
> ANSI, ISO あるいは JIS で現実的な仕様の決まっている programming 言語と
> いうものはそう多くなく、わたしに思いつくものはCOBOL, FORTRAN, ADA,
> PL/1, C/C++, Common Lisp くらいしかありません。どれも一応 PC も含めた複
> 数の platform で動いていますが、この中で例えば web server を現実的なコ
> ストで書けるものは何か、と尋ねたら C/C++ か Common Lisp に落着く。
>
> したがって、どの programming 言語を使いますか?という問いは、
>
> gc のない C/C++ と、それを持つ Common Lisp の、どちらを使いますか?
>
> という問いと同値です。
889デフォルトの名無しさん:2011/10/05(水) 23:35:15.47
rubyは組み込むにはでかすぎる。信者があまりにもキモすぎるで論外。
890デフォルトの名無しさん:2011/10/06(木) 00:57:52.87
ECMAScriptの文法とどっこいどっこいじゃね>キモい
それに信者は言語と関係ないし
891デフォルトの名無しさん:2011/10/06(木) 01:16:50.19
>>888
当時すでにESは標準化されてるのに見事にスルーしてるのがひどい……
ほかにも今のところIEEEのSchemeとか、ECMAのC#とか
ISOならSmalltalk、Prolog、Eiffel、Modula-2、Forthなんかがあるな
Rubyも一応今ならJISがあるし、ISOにファストトラックで送られてる最中
Haskellみたいなのも一応標準化されてると言えるのかな
892デフォルトの名無しさん:2011/10/06(木) 01:50:29.44
仕様なんてなくたって次期gcc4.6に組み込まれることになった
golang さんのことも忘れないでくださいね…
893デフォルトの名無しさん:2011/10/06(木) 04:56:47.88
>>891
要するに実装に縛られたくないんだろうけどlisp使いたいだけの後付だよね
894デフォルトの名無しさん:2011/10/06(木) 06:31:00.43
プロパティに名前空間つかんのかの
895デフォルトの名無しさん:2011/10/06(木) 10:50:06.18
c# みたいにならないかそれ delphi とか pascal みたいにいったほうが
正確か…昔の葉名前空間と言うよりモジュール名で管理というかんじだけど
896デフォルトの名無しさん:2011/10/07(金) 02:27:49.65
オブジェクトが名前空間に属すなら
それを参照するプロパティも同じプレフィクスを持つとか
897デフォルトの名無しさん:2011/10/07(金) 14:24:23.42
>>882
Rhinoよく使うけどyieldとかletが使えるようになってたこと知らなかった。
ありがとう。

でもgenerator式はまだなんだね。
898デフォルトの名無しさん:2011/10/08(土) 00:19:18.22
>>897
js1.8自身ジェネレータまわりの変更がメインだからだと思う。
Rhinoで使えるバージョン=rhinoのバージョン数+サポートしたと言っている言語仕様バージョンの一部て感じだからspidermonkeyと同期してるわけじゃないよ。
Rhino1.7R3の変更ってes5準拠とCommonJSサポートのが目立つしね。
組み込み用途だとjs object実装がjava collectionsとして扱えるようになったから便利になったよ。
899デフォルトの名無しさん:2011/10/12(水) 09:26:39.29
javascriptのアンチテーゼのはずのDartが見事なjavascript1.5なのは仕様面で見てどう思うよ?
900デフォルトの名無しさん:2011/10/12(水) 12:31:15.46
Dartがjs1.5というのは分からないけどこのクソ言語だけは絶対に流行って欲しくない
901デフォルトの名無しさん:2011/10/12(水) 13:18:10.06
DartもCoffeeも一緒に滅んでくれ
あと激重jQueryもな
jsごとき1から10まで手書きできなくてどうする
902デフォルトの名無しさん:2011/10/12(水) 13:40:38.05
ついでにECMAScriptも滅べばいいのに
903デフォルトの名無しさん:2011/10/12(水) 14:00:14.77
Dartがボロクソに叩かれまくって、じゃあブラウザにvm乗せてもう好きな言語で開発できるようにしようぜって流れになればいい
904デフォルトの名無しさん:2011/10/12(水) 22:29:08.63
IEは好きなスクリプト言語を自由に追加できる設計だった
IE6は登場時点ではほんとに超先進的ブラウザだったんだよ
905デフォルトの名無しさん:2011/10/13(木) 03:59:40.91
>>903
java plug-inの出番だな。CommonDOMだけじゃなくLiveConnectもjava plug-inの管轄になったから次はブラウザ用の言語か。
906デフォルトの名無しさん:2011/10/13(木) 12:15:58.05
> ...このクソ言語だけは絶対に流行って欲しくない
> ついでにECMAScriptも滅べばいいのに

こういうアンチ野郎が多い言語は、不思議と普及してしまうというマーフィーの法則
907デフォルトの名無しさん:2011/10/13(木) 14:03:13.55
出たばかりのLiveScriptもいじり倒して遊んでるギーク以外重いからやめろって結構言われてたよ。
そのときからcallerまわりは問題視されてたけどnetscapeには黙殺されて今までズルズルやってんよ。
908デフォルトの名無しさん:2011/10/13(木) 21:14:27.79
ECMAScript.next: the “TXJS” update by Eich
ttp://www.2ality.com/2011/06/esnext-txjs.html
909デフォルトの名無しさん:2011/10/14(金) 14:36:11.77
Dartのすごさがイマイチわからんけど
よく見る「ECMAScriptのセミコロン省略が良かった/悪かった」てのは
単純にHTMLのonclick="..."とかでセミコロン不要にするってだけのものだろ?

onclickにDartを書きたいときとか、どう区別すんの
910デフォルトの名無しさん:2011/10/14(金) 16:12:09.46
911デフォルトの名無しさん:2011/10/14(金) 16:54:56.59
>>910
なるほどね
こりゃ、だめだわ
912デフォルトの名無しさん:2011/10/14(金) 17:14:23.36
ん、htmlタグの属性値中でセミコロン使うと何か問題あるんだっけ?
913デフォルトの名無しさん:2011/10/14(金) 21:19:50.77
HTML5の仕様によるとonclickにはJavaScriptしか書けないので
そもそも考慮無用
914デフォルトの名無しさん:2011/10/15(土) 00:44:43.61
>単純にHTMLのonclick="..."とかでセミコロン不要にするってだけのものだろ?
そもそもこれが間違ってる。
分かりきったものをだらだらと書かせるなよって事。型推論いいよねと似てる。
他の言語だとxml地獄、rubyでend地獄やpythonのインデント強制によるエントロピー増加が問題なわけ。

省略したらしたでjsみたいな問題も出てくるし、jsの場合はセミコロンの省略が言語仕様にあるからそれとは別問題。
たんにセミコロン省略できない言語メインが省略便利といってるだけ。
915デフォルトの名無しさん:2011/10/15(土) 01:21:58.33
>>914
すまんが何言ってるかちょっとわからん
まーあれだ、イベントハンドラのrobustnessの重要性にjQueryもやっと気づきはじめたところに
document.query(...).on.click.addとか、また黒歴史を繰り返すのかよって感じ
ライブラリの問題だからスレ違いだけどな
916デフォルトの名無しさん:2011/10/15(土) 04:26:27.99
dartスレのjQuery厨か?
917デフォルトの名無しさん:2011/10/16(日) 18:54:33.85
Dartスレなんてあったのかよ
なんでここで議論してんだ
918デフォルトの名無しさん:2011/11/25(金) 19:39:31.74
JDKのjavascript実装がJDK7でrhino1.7R3に変わっとる。
デフォルトの言語バージョンが1.8で特権コード書かないと変更できないようになってるがJDK8でnashornに変えるのに互換性大丈夫だろうか。
これはもしかしてnashornが1.8準拠なのか?
spidermonkeyもjs1.8.xでes5準拠だしやっと最新仕様で早い実装が来るかもしれんな。
919デフォルトの名無しさん:2011/12/13(火) 13:10:41.45
VB6.0のScriptControlでDMDScriptを使おうとしています。
http://www.digitalmars.com/dscript/download.html
の「DMDScript binaries」をダウンロードしました。

ScriptControl1.Language="DMDScript"でエラーにはならないので
認識はされているようなのですが、
ScriptControl1.Eval("1+1")で何も返してくれません。
JScriptとVBScriptはもちろん、PerlScriptとRubyScriptで
ちゃんと値を返したのですが
DMDScriptはScriptControlから呼び出されるEvalに対する
インターフェース(?)を実装していないのでしょうか?
920デフォルトの名無しさん:2011/12/14(水) 05:26:38.70
APIの実装固有はスレチ。
javascriptスレがあるがjs互換じゃなくてJScript互換なDMDScriptも対象かは知らん
921デフォルトの名無しさん:2011/12/15(木) 09:14:23.79
412 :デフォルトの名無しさん [↓] :2011/12/14(水) 18:41:16.34
なんでプログラム板にこのスレがあるんだ

413+1 :デフォルトの名無しさん [↓] :2011/12/14(水) 18:48:12.24
JavaScriptがブラウザ以外の環境でも使われだしたから。

418 :デフォルトの名無しさん [↓] :2011/12/15(木) 07:49:36.32
jsはブラウザによって挙動が異なるけど、これはjsで言うところのクライアント(エージェント)ねたになるのでweb系板扱い。そもそもム板ではブラウザの挙動などまったく興味ないし誰も知らない。

419 :デフォルトの名無しさん [↓] :2011/12/15(木) 08:20:30.49
>>413
それならブラウザで使用するJavaScriptの話をここでするのはおかしいんじゃないの

420 :デフォルトの名無しさん [↓] :2011/12/15(木) 08:37:54.15
ム板でjsスレがあってもおかしくないけど、ブラウザねた(jsコンパイラの実装レベルの違い)や
ブラウザ依存(xml/domなどの処理クラス・オブジェクトのサポートがブラウザ別にある・ないなど)の話題が中心になるは興味ないしそういうtipsコードはプログラムに関係ないからこの板では勘弁してほしい。

421 :デフォルトの名無しさん [↓] :2011/12/15(木) 08:54:50.81
いくつか乱立してるからそのうち一つにまとめると2ch jsコミニティーとして成立するだろうね。
【node.js】サーバサイドjavascript【Rhino】
みたくクライアントサイドの議論じゃないってことを付けとくと勘違い者とかまぬけ者は無理にスレに入ってこないだろう。
俺はインタプリタでrhinoを使ってるからjavaにも精通する必要があるしcgi,httpserver,streamなんかも当然に理解してる必要があるけど、ブラウザでやるならmozilla,webkit,chromeのjs実装が中心でms-ieはweb板扱いになるんじゃないか。

423 :デフォルトの名無しさん [↓] :2011/12/15(木) 09:11:26.52
ECMAScript デス 3
http://hibari.2ch.net/test/read.cgi/tech/1190160481/

が、ム板のjs本スレか。じゃそっちに集約するし移動するか。
922デフォルトの名無しさん:2011/12/15(木) 12:58:05.22
>>918
jdk6 rhinoは御承知のようにJavaAdapterがサン実装なのですが、rhino script上でjava class abstractを継承したjs funtionまたはabstractを直にnewしたようなインスタンスはどうやって作ればいいでしょうか。
923デフォルトの名無しさん:2011/12/20(火) 01:48:43.81
node のせいで let、yield使えないv8のjsが流行ってるけど、
どうしてこうなった。
明らかにMozilla側の実装の方がよかった…。
924デフォルトの名無しさん:2011/12/20(火) 11:02:48.62
このスレで言うことじゃない。
925デフォルトの名無しさん:2011/12/23(金) 14:50:49.73
letやyieldはMozillaの独自実装
断じて先行実装ではない
多分
926デフォルトの名無しさん:2011/12/23(金) 17:49:32.07
先行=独自です。

ただし、letなんかはharmonyの後でも議論が続いていて入る見込みが大いにあります。
http://wiki.ecmascript.org/doku.php?id=harmony:block_scoped_bindings

(function (){ 〜 })();とか
new function (){ 〜 };とか馬鹿馬鹿しいし。
927デフォルトの名無しさん:2011/12/23(金) 19:13:57.92
本家とはいえ、Mozillaのオラオラ実装っぷりはIEを笑えん
928デフォルトの名無しさん:2011/12/23(金) 19:19:08.58
そうだそうだ
しかるべき組織が策定した仕様から実装しろ!
929デフォルトの名無しさん:2011/12/23(金) 19:41:56.23
そりゃC++をみてから言えよ
イニシアチブを一社がとって進むほうが
結果的にいいものが出来るよ
熟成したら独立組織に移管がよか
930デフォルトの名無しさん:2011/12/23(金) 20:23:08.81
C++はStroustrupが指揮棒握ってるよ。
JavascriptでEichのやらせたharmonyレベルの仕事は常にしてる。
委員会で仕様を策定しているのが原因だと思うのは言語をよく理解できてないから。
931デフォルトの名無しさん:2011/12/23(金) 20:26:15.10
IE6の時代が最もいい時代だったってこった
932デフォルトの名無しさん:2011/12/24(土) 17:49:47.25
MSは前に立つとボロがでるから
後ろからついてく会社
933デフォルトの名無しさん:2011/12/27(火) 05:35:05.97
どうしてECMAScript 4が駄目になったのかつくづく理解できない。
あれさえ通っていればJavaScriptが主流になることに異議はなかった。

2011年になってまだ新しいモジュールの書き方生み出していてどうするんだよ。
http://waka.hatenablog.com/entry/2011/11/27/215627
このまま本格的に使われるようだと、保守不能なコードが際限なく量産されるぞ。
CoffeeScriptならどうにかなるんかとおもいきや
フォラーム覗いたら、どうすんだよ、どうにもなんねーと揉めてる有様

2005年のスライド↓

「最後に生き残るのはJavaScriptかもな」
http://eto.com/d/PresenShibuyaJS.presen

完全に的中しているし、確かに生き残ったが、言語としてまるっきり停滞したまま生き残るとか
まして主流にしようとかありえないだろ。
正直、この10年かJavaScript界隈にいて日々バッドノウハウを生み出して喜んでた連中、
言語そのものをどうにかしようとしなかった連中を全員殴ってまわりたいレベル
934デフォルトの名無しさん:2011/12/27(火) 05:45:21.04
Googleが素直にECMAに沿って実装してればなあ。
935デフォルトの名無しさん:2011/12/27(火) 08:16:43.80
>>933
まだ本格的には使ってなくて眺めてる状態だけどひでえ書き方だな
プログラミング界隈じゃよくあるけど妄信的な連中が大声で喚いて何も進まない
936デフォルトの名無しさん:2011/12/27(火) 08:28:59.86
>>933
つ Dart
937デフォルトの名無しさん:2011/12/27(火) 08:44:54.83
Dartは信者も苦笑い。
938デフォルトの名無しさん:2011/12/27(火) 12:01:46.95
4を無理に通してたらバベルの塔再来になってた。
慎重に合意取り付けてくのは当たり前。
今でも非互換性が問題になって、
$(document).readyとかやってるのに。

それから4の機能の殆どは継続審議されてる。
HTML5界隈でも標準化が順調に進んでる。
939デフォルトの名無しさん:2011/12/27(火) 21:33:42.89
http://blogs.msdn.com/b/ie_jp/archive/2011/12/27/10251140.aspx
Math.coshとかMSは何をやってるんだ…
940デフォルトの名無しさん:2011/12/27(火) 22:20:17.73
大規模な JavaScript
大規模なアプリケーションを構築する場合、高品質なオーサリング機能やツールの活用が不可欠になります。

そのような場合は、クラスなどの高度な抽象化およびその他の一般的なプログラミング パターンを基盤として、
ツール利用のエクスペリエンスを向上させることができます。

数十万行の JavaScript コードから成る Office Web アプリケーションは、主に Script# をベースに記述されており、
JavaScript にコンパイルされ、今日の各種ブラウザーで実行できるようになっています。
Google Web Toolkit などのツールセットも同様のアプローチを採っています。
最近では、Traceur や CoffeeScript などの変換コンパイラ ライブラリによって、
JavaScript への追加構文や、完全な代替構文も、今日のブラウザーでランタイムへの変更なしに処理可能なことが実証されています。

JavaScript には基本的な欠陥があり、これらのシナリオをサポートするには JavaScript の構文およびランタイムからの “決別” が必須であると予告する向きもあります (Dart の例など)。
私たちはこうした見解には同意しません。
TC39 委員会の参加者として、標準ランタイムを拡張し、大規模な JavaScript 開発のサポートに必要な構文機能を既存の JavaScript 標準の上に構築できると確信しています。
941デフォルトの名無しさん:2011/12/28(水) 00:18:05.15
今更ECMAScript 4を持ちだすやつのFlash臭
942デフォルトの名無しさん:2011/12/28(水) 23:15:02.26
>>926
Mozillaの独自実装とは違った仕様になる可能性大だけどな
943デフォルトの名無しさん:2011/12/31(土) 20:44:38.10
クラスメソッドからプライベートメンバーを参照したいんだけど、どうすればいいい?

function Abc(){ var x; }
Abc.func(){ return x + x; }

みたいなことをしたいんだけど。

944デフォルトの名無しさん:2011/12/31(土) 22:19:49.04
日本語でおk
945デフォルトの名無しさん:2011/12/31(土) 22:31:52.63
function Abc(){ this.x = 1 }
Abc.func(){ return this.x + this.x; }
946デフォルトの名無しさん:2011/12/31(土) 22:41:28.70
ESでおk
947デフォルトの名無しさん:2011/12/31(土) 22:57:41.53
>>945
それ動かない
948デフォルトの名無しさん:2012/01/01(日) 01:05:24.43
function Abc() { this.x = 0; }
Abc.prototype.func = function () { return this.x + this.x; }

var test = new Abc();
test.func(); // 0 + 0 なので 0 が return される

test.x = 1;
test.func(); // 1 + 1 なので 2 が return される

ちなみに、Abc.prototype.func のところは次のようにしてもOK
Abc.prototype = { func : function () { return this.x + this.x; } };
949デフォルトの名無しさん:2012/01/01(日) 01:09:17.25
>>943のプライベートメンバーってクラスメンバー以外から直接アクセス出来ないって意味だよ。

text.x = 1;

とかは禁止したい。
950デフォルトの名無しさん:2012/01/01(日) 01:10:02.14
クロージャ使え
951デフォルトの名無しさん:2012/01/01(日) 01:13:54.94
クロージャを使うのは
苦労じゃ
952デフォルトの名無しさん:2012/01/01(日) 01:33:58.33
出来たけど、面倒だね。

var Abc = function Abc(){
var x = 1;
return { func : function(){ return x + x; } }
}();

Abc.func();
953デフォルトの名無しさん:2012/01/01(日) 01:47:54.43
>>952
10点(100点満点中)

惜しかったねw
答えはJavaScriptクックブックとか
そんな感じの名前のオライリー本に載ってるよ。
954デフォルトの名無しさん:2012/01/01(日) 01:48:42.79
点数とかいらないから。知ってるなら書けよ。
955デフォルトの名無しさん:2012/01/01(日) 01:51:48.03
だからオライリー本に書いておいたよ。

オ・レ・がw
956デフォルトの名無しさん:2012/01/01(日) 02:24:13.37
おk。ありがとう。

めんどうくさいから>>952でいいわ。
957デフォルトの名無しさん:2012/01/01(日) 10:10:22.87
貴様オライリー本の著者を侮辱するのか!
958デフォルトの名無しさん:2012/01/01(日) 11:44:46.38
絵に描いた餅より手の中にあるカンパンですよね
959デフォルトの名無しさん:2012/01/01(日) 15:04:42.15
オライリーを侮辱するわけではなくて、
>>952が間違っているわけでもなく、目的も達成されているし、足りない部分があるとしても
さらに100点満点中90点分の何かがあるとは思えない(=>>953の発言が信用出来ない)から
>>952でよしとした。
960デフォルトの名無しさん:2012/01/01(日) 15:11:01.23
function ABC(){
if( this.constructor !== ABC ){ return new ABC(); }
var x = 1;
this.func = function(){ return x + x; };
}

var abc = ABC().func();

プライベートメンバの代わりにクロージャ使う場合は、
昔のコードならこうじゃね。

961デフォルトの名無しさん:2012/01/01(日) 15:18:57.86
>>960
その記述だと、>>952に対してどういうメリットがあるの?
962デフォルトの名無しさん:2012/01/01(日) 15:19:45.75
同じメンバなのに this.x で統一できないのは痛いよな。
言語として実装されてないわけだから、おとなしく _ を付けるしかないかな。
変に小細工して難解なコードになるのは本末転倒。
963デフォルトの名無しさん:2012/01/01(日) 15:21:35.31
>>962が何に対するレスなのか知りたい。
964デフォルトの名無しさん:2012/01/01(日) 15:42:19.33
>>961
混乱させてすまん。
クックブックに出てきそうな普通のコードを書いただけで、
俺と>>953とは無関係だよ。

利点はprototypeが使えること。
既にプロトタイプ式のクラスが廃れてきてる現代ではどうなの?ってコード。
965デフォルトの名無しさん:2012/01/01(日) 15:47:25.02
>>964
ありがとう。

プロトタイプ式のクラスって廃れてきてるんだ。
その辺りの最新状況を学べる書籍や情報源ってある?
966デフォルトの名無しさん:2012/01/01(日) 15:51:56.73
>>962
俺も同意見。プライベートは列挙不可属性だけで十分。
クロージャって使いまわすと複雑になるだけだから、
ちょっとしたlambdaな物に使うのが無難だと思う。
967デフォルトの名無しさん:2012/01/01(日) 16:00:37.78
>>965
ごめんごめん。廃れてるってのは自分の勝手な意見で、
文献とかではなく、jQueryとかの印象で言ってる。

最近のソースって基本的に prototype をすげ替えるだけで、
クロージャ使ったプライベートメンバとか、
prototype.constructor書き換えとか複雑なことしないから。
968デフォルトの名無しさん:2012/01/01(日) 16:05:55.51
>>966
列挙不可属性ってどうやってつけるの?

>>967
ありがとう。よくわかった。
969デフォルトの名無しさん:2012/01/01(日) 16:11:19.05
>>968
列挙不可はdefinePropertyで設定できる。
970デフォルトの名無しさん:2012/01/01(日) 16:59:44.44
>>969
ありがとう。

var Abc = {};
Object.defineProperty( Abc, "x", { value: 1, enumerable: false } );
Abc.func = function(){return this.x + this.x;}

Abc.func();

小細工、複雑、難解って点に関しては>>952の方がマシな感じがする。
971デフォルトの名無しさん:2012/01/01(日) 17:12:33.00
>>970だと Abc.x が undefined にならないんだね。

やっぱり、>>952でいいわ。
972デフォルトの名無しさん:2012/01/01(日) 17:15:29.10
>>970
ちょっと質問の意図を履き違えていたわ。
クラス内のプライベートメンバという意味じゃなくて、
クラス関係なくアクセス制御したいだけならクロージャでいいと思う。
973デフォルトの名無しさん:2012/01/01(日) 17:17:23.23
>>972
了解。ありがとう。
974デフォルトの名無しさん:2012/01/01(日) 22:00:18.25
var a = (function(){return 1;})();
var b = function(){return 1;}();

わざわざaの右辺のようにしているコードを見かけるんだけど、function(){return 1;} の周りに ( ) は必要?
bじゃダメなの?

こういう場合の優先順位をどう考えればいいのか知りたいんだけど、
演算子の優先順位はあるけど、ブロック{}を含めた優先順位ってどこかに書いてある?
975デフォルトの名無しさん:2012/01/01(日) 22:39:37.20
>>974
bは最後まで読まないとクロージャだと分からないから控えたほうがいい。てか、やめろ!
976デフォルトの名無しさん:2012/01/01(日) 22:41:33.66
なるほど。可読性を考えるとbにもメリットがあるということか。
977デフォルトの名無しさん:2012/01/01(日) 22:44:56.26
>>974
aの方がbより1step少ないとかじゃないっけかなぁ
別にbで良いと思うよ
978デフォルトの名無しさん:2012/01/01(日) 22:53:26.78
>>977
bを勧める理由はなに?
979デフォルトの名無しさん:2012/01/02(月) 00:19:53.14
()をつける必然性がない。必要ないなら付けない方がいいという考え方もあり得る。

aを勧めるなら、cの方がもっといいだろ?
var c = (((((((((((function(){return 1;})))))))))))();
980デフォルトの名無しさん:2012/01/02(月) 00:26:33.69
┐(´ー`)┌
981デフォルトの名無しさん:2012/01/02(月) 00:36:59.88
>>978
すまん正直どっちでも良い
元々はbの方が中間コードで1step少ないと思ってたけど
実際は同じだったようだ

982デフォルトの名無しさん:2012/01/02(月) 00:43:20.95
function()の前に(があるからクロージャーだと判断するとか、言語仕様に対して図々しい話だよな。

aなんて単なる無駄だから、bの方がいい。
983デフォルトの名無しさん:2012/01/02(月) 00:59:58.43
>>981
この話(↓)と勘違いした、とか?

JavaScriptの無名関数の実行 (function(){})() と (function(){}()) の違い | 圧縮電子精神音楽浮遊構造体
ttp://polygon-planet.blogspot.com/2011/12/javascript-function-function.html
984デフォルトの名無しさん:2012/01/02(月) 01:05:03.60
>>983
そうそう
985デフォルトの名無しさん:2012/01/02(月) 01:57:28.86
aは無名関数が実行されて戻り値がaに代入される
bは関数オブジェクトがbに代入される。呼ばれるまで関数は実行されていない。
986デフォルトの名無しさん:2012/01/02(月) 02:01:41.47
えっ
987デフォルトの名無しさん:2012/01/02(月) 02:11:17.69
>>982
可読性を犠牲にしてたった二文字を削るのか。書く一方で保守の経験はないんだろうな。
988デフォルトの名無しさん:2012/01/02(月) 02:20:33.55
何らかの意味を持つわけでもない文法上必然性のない(をfunction()の前に付けるとなぜ可読性が上がると考えているのか全く理解に苦しむ。
保守する人間に俺ルールの(の意味を読み取らせようとする図々しさに呆れ果てる。

削るのではなく元々無い二文字だ。
989デフォルトの名無しさん:2012/01/02(月) 02:33:31.01
>>988
適当なライブラリ読んでみろ。jqueryでもprototype.jsでもclosurelibraryでもなんでもいい。
var hoge = function(){
// 処理が複数行におよぶ
})();//ここまでスクロールしないとクロージャだと分からない
これがなんで理解出来ないんだろ。たった二文字でここまで可読性上がるんだよ?
990デフォルトの名無しさん:2012/01/02(月) 02:34:55.27
>>988
function構文はかっこ無しだと評価されないからエラーになる。
Objectも同じ。
むしろ一行で書く方が特例なんだよ。
991デフォルトの名無しさん:2012/01/02(月) 02:36:13.67
>>989
バカはほっとけ。トリッキーな保守もできないコードしか生み出さないんだから。
992デフォルトの名無しさん:2012/01/02(月) 02:38:18.21
function()の前に(が付いていると、閉じ括弧の後ろに();がついてるとか思っちゃう人間の方がよほどトリッキーな脳だろ。
993デフォルトの名無しさん:2012/01/02(月) 02:40:35.22
だからFunction Objectは評価の問題もあって括弧付けるのが普通なんだってば。
JavaScriptのソースを普段読んでる人間なら、勝手に身に付いてる事の一つだろ。
994デフォルトの名無しさん:2012/01/02(月) 02:47:43.90
これはひどい。理論抜きで意地だけで反発してる。
995デフォルトの名無しさん:2012/01/02(月) 02:49:37.50
まあ、今まで疑問に思わずに勝手に身についたことを否定されたら意地にもなっちゃうわな。
996think49 ◆bKk/qcAKuM :2012/01/02(月) 02:54:11.97
私は

function a () {}(); // ES3違反 (ES5準拠)
(function b () { ; })(); // ES3準拠

と教わった記憶がありますが、どの規則を指しているのか見つけられなかったり。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#section-12.4
http://es5.github.com/#x12.4
と当たりを付けたら違いました…。
997デフォルトの名無しさん:2012/01/02(月) 02:58:19.29
規格に見つけられないなら、記憶違いだろうね。
998デフォルトの名無しさん:2012/01/02(月) 03:04:23.17
var i = 0;
(function (){
console.log(i++);
})();
function (){
console.log(i++);
}();

test.js:5
function (){
^

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
SyntaxError: Unexpected token (

999デフォルトの名無しさん:2012/01/02(月) 03:05:36.09
var foo = function () {
// ...
};
var bar = (function () {
// ..
})();
は割と一般的な書きかたで逆のパターンはみないし、
括弧つけるほうがわかりやすいだろう。
2文字増えるだけだし。
関数の中の行数が増えると、読むときにちょっと面倒かと思う。

まあ、関数本体が十分に短かければ、大差ないかもね。
1000デフォルトの名無しさん:2012/01/02(月) 03:06:31.41
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。