ECMAScript デス 3 ..
[2ch|▼Menu]
39:デフォルトの名無しさん
07/10/24 10:09:02
>>37
Operaも標準規格マンセーなブラウザだし、Mozillaと同じぐらいの速度で実装してくれそうだけど。

40:デフォルトの名無しさん
07/10/24 10:35:53
>>37
あと Adobe な。Tamarin。

IE に対しては
URLリンク(wiki.mozilla.org)
んなことしてるしな。テスト程度は動かせるようになったみたい。


41:デフォルトの名無しさん
07/10/24 12:40:41
Tamarin - MozillaWiki
URLリンク(wiki.mozilla.org)

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:デフォルトの名無しさん
07/11/14 02:00:59
恐ろしく汎用言語化してるな。
こりゃRhinoの再実装に時間食いそうだ。
今までの実装も名前とバージョン引き継いで
別コードベースで書き直しとかした方が楽そうだと、一瞬思ったがed.3と互換性持ってるんだったな・・・。

あと、JavaScript2.0の策定に1年、実装に1年くらいかねぇ。

43:デフォルトの名無しさん
07/11/14 09:01:05
livescript登場した時には、ここまで普及するとは思わなかった。
インタープリター系では一番実行されてる言語だし、
Ajax関連で重要性もどんどん高まっているから、
言語としてより強力にならざるを得ないだろうね。
なんでもできることをみんな望んでいるというか。

44:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/14 16:40:07
ECMAScriptは仕様が仕様だからパーサ部分手書きだろうしね。

46:デフォルトの名無しさん
07/11/14 18:01:37
JavaScriptCore(KJS) は yacc だけどな。ES4 はしらんけど。
URLリンク(trac.webkit.org)
URLリンク(websvn.kde.org)

47:デフォルトの名無しさん
07/11/17 01:36:40
現物にお目にかかれるのはやっぱり仕様策定と実装で2年はかかるっぽいね。
URLリンク(www.atmarkit.co.jp)

48:デフォルトの名無しさん
07/11/17 09:17:50
それはweb browser上、特にtamarinに移行するfirefox、での話でしょ?
単体の処理系はもっと早いよ。


49:デフォルトの名無しさん
07/11/17 09:24:17
いずれにせよ、まともなクラスシステムを持つようになって大変めでたいです。

50:デフォルトの名無しさん
07/11/17 17:10:19
ごめん、クラスイラネ関数型+prototypeパラダイム最高!派なんだ。
モジュラー性の確保だけで十分だったと思う。

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

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

AJAXとかいい加減うざいと思ってる。

51:デフォルトの名無しさん
07/11/17 17:19:40
てかプロトタイプパラダイムがあればクラスなんて簡単に実装できるじゃん。
プリミティブなままにしときゃいいのに、と思ってしまったおれはscheme脳なのか

52:デフォルトの名無しさん
07/11/17 17:34:03
>>50
package と namespace だけつかえばえーやん。
>>51
保護されないけどね。そこがいいんだろうけど。
ところで R6RS はお嫌い?

C もどき文法で 型付と動的型の融合は Dylan 以来の挑戦
と思うと面白かったり。Perl 6 もあるけどさ。

53:デフォルトの名無しさん
07/11/17 17:42:19
言語として面白いと思うが実装が普及するかどうか微妙じゃね…?

54:デフォルトの名無しさん
07/11/17 18:14:04
ES4って面白みあるか?

55:デフォルトの名無しさん
07/11/17 18:15:13
OreScript

56:デフォルトの名無しさん
07/11/17 18:32:57
Java ライクな拡張文法の方に意識が行くのも分かるけど
一番重要なのは互換性があるってことだろう

57:デフォルトの名無しさん
07/11/17 18:33:43
そんなRubyみたいなこと言わないでw

58:デフォルトの名無しさん
07/11/17 18:34:14
>>55

59:49
07/11/17 23:58:57
>>52
自分は、ECMAScript 4も、R6RSも万歳です。
正直異なるクラスシステムの間でポートするのうんざりなんですよ。
prototype.js逝って良し

60:デフォルトの名無しさん
07/11/18 20:48:20
というかなんでprototype.jsがはやってんの化理解できない。
あんなライブラリ使うくらいなら自分で作るわ。

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



61:デフォルトの名無しさん
07/11/18 21:00:14
自分で作る方が理解できない。
あんなライブラリ作るぐらいなら、既にあるのを使うわ。

62:デフォルトの名無しさん
07/11/18 21:06:07
>>60
批判するのはかまわないけど
もっとprototype.jsのことを知ってからにしたほうがいいよ

それじゃ「JavaScript?スクロールバーに文字流すやつでしょ」
といってる連中とそう変わりない

63:デフォルトの名無しさん
07/12/18 04:08:19
横槍で俺も一言
base2ライブラリの構造が理解できない、base2ライブラリって難しくない?


64:デフォルトの名無しさん
07/12/18 21:19:19
>>63
知らなかったんで調べたら
URLリンク(code.google.com)
URLリンク(dean.edwards.name)
URLリンク(base2.googlecode.com)

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

URLリンク(dean.edwards.name)
に納得&理解できるとなるほどと思う。

65:デフォルトの名無しさん
07/12/18 22:01:27
javascriptは他でやれ

66:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/19 01:18:53
JavaScript 1.7以降ならOKだけどECMAScript 3だとだめだよ。
undefinedに関してはECMAScript 3でもOKだけど。

68:デフォルトの名無しさん
07/12/19 01:29:53
objectリテラルのキーは全部文字列と見なされるからOKなんじゃね?

69:デフォルトの名無しさん
07/12/19 02:08:30
URLリンク(interglacial.com)
URLリンク(www2u.biglobe.ne.jp)

確かに Identifier は文字列に変換されるけど

URLリンク(interglacial.com)
URLリンク(interglacial.com)

Identifier が予約語だとダメでしょ。

70:デフォルトの名無しさん
07/12/29 21:56:27
メタプログラミングみたいなことをやりたいのですが、
リフレクション系の機能はないですか?
メソッドを列挙したりしたいのですが・・・
rubyで言えば、Object.methods

71:デフォルトの名無しさん
07/12/29 22:10:09
仕様書嫁。いくらでもやり方がある。

72:デフォルトの名無しさん
07/12/29 23:09:01
ワカタ
メソッドあったら、for-inで、列挙できるのな

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

とか、やって、なんで、うまくいかないんだろとかおもてて、
thisつっこんだらメソッド列挙できますた
サンクソ

73:デフォルトの名無しさん
07/12/29 23:20:42
それだとメソッドじゃなくてプロパティの羅列だけどな。

74:デフォルトの名無しさん
07/12/29 23:41:30
あ、本当だ・・・orz

しかも、WSH/JScriptでやったら、プロパティ列挙するできんぽいし

75:デフォルトの名無しさん
07/12/29 23:46:45
typeof が "function" のを抽出

76:デフォルトの名無しさん
07/12/29 23:49:21
そもそもメソッドって概念が存在しない。
メソッドっぽく見えるのは、プロパティに関数オブジェクトが代入されたもの。

77:デフォルトの名無しさん
07/12/30 00:03:12
じゃあ真のメソッドってどんなのよ

78:デフォルトの名無しさん
07/12/30 00:29:46
JavaScript Shell 1.4
URLリンク(www.squarefree.com)

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

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

props(Array.prototype);
props(String.prototype);
とかやっても、何も出ないのは、組み込みだからですか?

79:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/30 00:52:29
mozilla系の全てのオブジェクトの全ての
プロパティ書き出すコード書いたらメモリ食い過ぎて落ちた事あるな。

81:デフォルトの名無しさん
07/12/30 01:38:48
>>77
だからない。あるのはclosure

82:デフォルトの名無しさん
07/12/30 02:02:47
現状のECMAScriptの仕様にはメソッドなどないと。
第4版には盛り込まれてるけどな。

83:デフォルトの名無しさん
07/12/30 02:53:49
関数オブジェクトと関数リテラルならあるけど。
でも結局プロパティに突っ込む。
てか、仕様書嫁。

84:デフォルトの名無しさん
07/12/30 11:35:19
Javascript1.7が楽しい。Pytnonからyieldとリスト内包をパクってきた
んで非常に面白い言語になってる。インデントを強制されるPythonは
個人的につかう気にはならんがjs1.7はその代替になるね。
しかし、rangeは標準で入れておいて欲しかったな・・・

85:デフォルトの名無しさん
07/12/30 11:44:45
うん、クラスもプリミティブ実装になって、
他のscript言語を駆逐する可能性あり。
Webブラウザが味方だし。

後はCPAN相当の構築。
namespaceとpackageがあるから容易と思われ。


86:デフォルトの名無しさん
07/12/30 16:46:53
そういや外部ライブラリを読み込む記法って標準化されるのかな。
教えて詳しい人

87:デフォルトの名無しさん
07/12/30 17:28:52
標準ならば、unit つかうことになるんでねーの
URLリンク(wiki.ecmascript.org)
AS3か4がどーするかはわからんけど。

88:デフォルトの名無しさん
07/12/30 20:47:36
>>87
ありがとう。
外部ライブラリっていうか、外部のソースを読み込む方法について聞くつもりでした。
どちらにせよ、use使えばいけるのね。
早く使ってみたい。

89:デフォルトの名無しさん
07/12/30 21:41:20
>>85
>後はCPAN相当の構築。

取り敢えず Python の標準ライブラリを一つずつ
ECMAScript にポーティングしていけば良いのかな

90:デフォルトの名無しさん
07/12/31 07:23:49
1.7つかってみてぇ!っておもったけど
FireFoxだけっすか


91:デフォルトの名無しさん
07/12/31 11:27:22
rhinoがあるよ

92:デフォルトの名無しさん
07/12/31 12:05:23
rhinoは1.6です。

93:デフォルトの名無しさん
07/12/31 12:06:48
fURLリンク(ftp.mozilla.org)

94:デフォルトの名無しさん
07/12/31 12:21:15
Rhino 1.6.R6 とかで JavaScript 1.5 機能が入ったりしてるし
Rhinoのバージョンと JavaScript のバージョンって完全一致してるわけじゃないよね?
そこに置いてある rhino1_7R1pre.zip は JavaScript 1.7 相当なの?

95:デフォルトの名無しさん
07/12/31 12:40:16
DIY, RTFM
Do It Yourself, Read The Fucking Manual

96:デフォルトの名無しさん
07/12/31 18:08:50
js1.7相当の実装は今のところspidermonkeyだけ。

97:デフォルトの名無しさん
07/12/31 21:24:28
さすがリファレンスインプリめんてーしょん

98:デフォルトの名無しさん
07/12/31 22:18:55
というかjs1.6はspidermonkeyのGCバグフィックスとArrayオブジェトにプロパティ増やしただけのメンテナンスリリースだからな。

rhinoの方はconstとか実装してなかったから1.6相当になったのもつい最近。

99:デフォルトの名無しさん
07/12/31 23:11:37
>>98
前スレでも同じような話が出てたが、JS1.6が"1.6"というバージョン名を
持つにいたった最大の理由であるE4Xを忘れてもらっては困るな。
まあJS1.5.1となっていた可能性もあるわけだから
メジャーバージョンアップとも言い切れないのかもしれないが。
URLリンク(bugzilla.mozilla.org)

しかしGCバグフィックスがJS1.6の主機能の一つって言うのは
どこから出てきた話だ?GCがらみの修正なんてそれこそ
Mozilla 0.6からMozilla 1.7にわたる長いJS1.5の時代にも
JS1.6になって以降も繰り返されてることだろうに。
その話の根拠となる文書またはバグを示してくれるとありがたいんだが。

100:デフォルトの名無しさん
07/12/31 23:16:49
E4Xはもともとrhinoで実装されてたしなぁ。

101:デフォルトの名無しさん
08/01/01 09:57:17
あけましておめでとう

spidermonkeyをみなおしたおれがいる

102:デフォルトの名無しさん
08/01/17 20:26:18
板違い&重複のjavascriptスレに抜かれそうな勢いとは皮肉だな。

103:デフォルトの名無しさん
08/01/18 11:05:11
spidermonkeyのライセンスってGPLかいな

104:デフォルトの名無しさん
08/01/18 11:38:34
***** BEGIN LICENSE BLOCK *****
Version: MPL 1.1/GPL 2.0/LGPL 2.1

105:デフォルトの名無しさん
08/01/19 22:05:07
Javascriptを勉強しようと思っているのですが、チュートリアル的に使えるオススメのサイトってありますか?
テキストなどを処理するためのスクリプトを書いたり、将来的にはSilverlightでGUIアプリケーションを作りたいと思っていますが、
検索してもHTML埋め込みでの解説ばかりで困っています。

106:デフォルトの名無しさん
08/01/19 22:33:58
埋め込み以外でガチでJSを知りたいならサイ本買えば。

107:デフォルトの名無しさん
08/01/19 22:42:40
まあサイ本だな。
どうしてもWeb上でチュートリアル的なものをというなら
MDCのCore JavaScript 1.5 Guideあたりか。

108:デフォルトの名無しさん
08/01/19 22:43:12
やっぱり定番はオライリーですか……。
Webで気軽に勉強というわけにはいかないみたいですね。
ありがとうございました。

109:105,108
08/01/19 22:46:52
>>107
MDCは求めていたものと少し違いますが、仕様が一覧で見られるだけでも大分わかりやすいです。
しばらくこれを見ながら勉強してみようと思います。
ありがとうございます。

110:デフォルトの名無しさん
08/01/19 23:57:08
ちゃんと言語としてJavaScriptを知るにはO'Reillyの本が一番いいよ。
はっきりいってWebで検索するよりずっと手軽かつわかりやすく効率いい。

111:デフォルトの名無しさん
08/01/20 15:22:59
なあ、全然プログラム解らない俺に教えてくれよ

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

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

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

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

Q4)VisualStasio2008Express のVisualBasic を使えば、VBS見たいにコンパイルしなくても気楽に実行できる、プログラムできますか?

112:デフォルトの名無しさん
08/01/20 15:41:03
>>111

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

結果的にスレ違いになるから続きは「くだらない質問はここにスレ」あたりにでも行ってな。

113:デフォルトの名無しさん
08/01/20 15:44:52
>>112
ありがトン

114:デフォルトの名無しさん
08/01/21 01:01:43
javascriptは関数型パラダイムにプロトタイプベースだから気軽には始められないと思うが・・・。
最低限、プロトタイプチェーンとコンテキストチェーン理解してないと言語仕様に付いていけないと思う。

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

まあ、どっちにしろjavascript2.0が出たら皆勉強し直しだしなぁ。

115:デフォルトの名無しさん
08/01/21 21:12:32
関数型的要素は意識する必要ないべ
それに、既に多くの人間が気軽に使っていると思うけど

116:111
08/01/22 18:47:11
親切な方、もう一つ教えてください。
Q4)ECMAScriptを覚えたら、どのWindowsPCでも、計算とか簡単なプログラム作って走らせたりできますか?
何か別にコンパイラとかインタプリタとか入れなくても、ネットカフェとか友人のPCとかでも、Windows標準状態でできますか?

117:デフォルトの名無しさん
08/01/22 19:19:10
>>116
とりあえずWSHやHTAなら大抵のWindowsPCで動くんじゃないか?

118:デフォルトの名無しさん
08/01/22 19:21:09
JScriptとJavaScriptでは変数のスコープの扱いがすこし違うくらいか

119:111
08/01/22 20:08:38
ありがトン

120:デフォルトの名無しさん
08/02/07 04:24:44
web上の文献を読んでいたら、global スコープでの var 宣言がほとんど無意味なように感じたんですが、
global スコープでは var をつけて変数を宣言するのは無意味ですか?

121:デフォルトの名無しさん
08/02/07 04:47:41
処理系にとっては無意味でも人間にとっては意味あるでしょう。

122:デフォルトの名無しさん
08/02/07 12:30:18
var付けないとコンテキストチェーンたどって変数探す処理が含まれるから挙動は違うと思うんだが。

123:デフォルトの名無しさん
08/02/12 09:27:08
win = window.open(...);
win.scrollBy(0,100);

みたいにサブウィンドウを作って、それを親から操作することは出来ないんでしょうか?

124:デフォルトの名無しさん
08/02/12 13:48:58
板違い

125:デフォルトの名無しさん
08/02/15 10:07:18
文字列リテラルで、Unicodeのコードポイントを
"\uXXXX"で指示できるけど、これはBMP内まで?

126:デフォルトの名無しさん
08/02/15 11:52:16
>>125
うん。16bit まで。
URLリンク(www2u.biglobe.ne.jp)
URLリンク(liosk.blog103.fc2.com) の [追記]

将来(ES4)に関してはこの辺
URLリンク(wiki.ecmascript.org)
URLリンク(bugzilla.mozilla.org)

127:デフォルトの名無しさん
08/02/15 17:23:45
>>126
サンクス。
手元の処理系だと、サロゲートペアで処理されてた。

128:デフォルトの名無しさん
08/02/16 23:01:51
"abc123def".search(/[0-9](?=[^0-9])/); // = 5
"abc123def".search(/(?=[^0-9])[0-9]/); // = -1

前者は期待通りですが、後者がマッチしない理由がわかりません。
3 を期待したんですけど。

129:128
08/02/16 23:13:41
URLリンク(www.kt.rim.or.jp)
むー、(?=〜)は前置できないのか。

130:デフォルトの名無しさん
08/02/24 18:05:38
prototype.js
ってどのへんが便利なの?

131:デフォルトの名無しさん
08/02/24 18:11:13
ES4がなくてもクラスを使える。

132:デフォルトの名無しさん
08/02/26 08:00:08
見た目クラスなだけだろ

133:デフォルトの名無しさん
08/02/26 10:46:22
lispのマクロに相当することってできるの?

134:デフォルトの名無しさん
08/02/26 14:56:25
lips マクロでググッたらキャノンのページ記述言語が出てきたんだが
lipsってあのlipsだよな?マクロなんてあったのか。

135:デフォルトの名無しさん
08/02/26 15:12:32
Nice joke!

136:sage
08/02/26 20:54:00
ものすごい記述方法を発見した!!

Date.call.call("".replace, " TRIM ", /^\s+|\s+$/g, "")
これなにしてるかわかるか!
使おうとは思わないけどすごいね
この記述はもう知られてるの?


137:デフォルトの名無しさん
08/02/26 21:20:07
callってes4でなくなるんじゃなかった?

138:デフォルトの名無しさん
08/02/26 22:01:39
なくなるどころか汎用メソッド化されるぜ
>>136
Function.call(String.prototype.replace, " TRIM ", /^\s+|\s+$/g, "")
String.replace(" TRIM ", /^\s+|\s+$/g, "")
などと書けるように
後者はすでにJavaScript 1.6で可能になってるけどね

139:デフォルトの名無しさん
08/02/27 14:23:21
どうすごいの?単なるトリムなんだけど。

140:デフォルトの名無しさん
08/02/27 16:41:48
任意のコンテキストで関数呼んでる。
invokeみたいなもん。

141:デフォルトの名無しさん
08/02/27 19:40:33
[].slice.call(arguments)とかarray.push.apply(array, arguments)とかならたまに見るな。

142:sage
08/02/28 00:58:02
ちょい脱線するけど
[].slice.call(arguments) より Array.apply(arguments) のほうが好き

143:sage
08/02/28 01:00:17
ミスった無駄にスレ消費して恐縮です。
Array.apply(null, arguments) と言いたかった

144:デフォルトの名無しさん
08/02/28 05:58:24
引数の数が1つでその値が数値である、ということが
絶対ないと保障されているならそれでもいいね。
だがその前にsageを覚えろ。

145:デフォルトの名無しさん
08/02/28 06:17:55
別に下げんでもいいよ
荒らしや厨が入ってくるわけでもないし

146:デフォルトの名無しさん
08/02/28 22:28:12
あらしです

147:デフォルトの名無しさん
08/02/29 01:56:46
ムーンサルトり乙

148:デフォルトの名無しさん
08/03/08 13:05:10
>>136
知られてるというか、そういうトリックを理解してないと今時のJSコード読めないお。
↓こんな遊びとか
URLリンク(d.hatena.ne.jp)

149:デフォルトの名無しさん
08/03/08 13:07:26
gotoスパゲッティや継続スパゲッティと一緒で理解する必要はないかと。
単なる遊びだから。

150:デフォルトの名無しさん
08/03/08 13:08:56
まあcall.callは有用に使われてるの見た事ないね

151:デフォルトの名無しさん
08/03/08 13:40:31
callee.callerの方が使える。

152:デフォルトの名無しさん
08/03/08 15:19:40
callを覚えたてのやつが誰もがやる遊びだが実用性は皆無

153:デフォルトの名無しさん
08/03/08 18:14:28
再帰で、関数名が変わってもいい様に
arguments.callee.call()にした事はある。

154:デフォルトの名無しさん
08/03/08 18:50:18
バッド・ノウハウの塊だなw

155:デフォルトの名無しさん
08/03/08 19:36:46
俺の知ってるバッドノウハウ
var o = {valueOf:function(){return 0;}};
++o

156:デフォルトの名無しさん
08/03/08 20:32:07
それはバッドノウハウではなく「遊び」のような気が。

157:デフォルトの名無しさん
08/03/08 21:09:24
もうちょっといじればジェネレータだ

158:デフォルトの名無しさん
08/03/09 00:53:48
JavaScriptで、JavaScript処理系は作れるのかな。

159:デフォルトの名無しさん
08/03/09 01:06:10
あるよ。ググッてみて。

160:デフォルトの名無しさん
08/03/09 05:02:10
あるんだ。
柔軟な言語だしな。

161:デフォルトの名無しさん
08/03/09 07:03:00
tamarinが自己完結コンパイラじゃなかったっけ?

162:デフォルトの名無しさん
08/03/09 11:24:14
>>153
そゆときは本体関数の内側にクロージャを書くかな。
初期化や終了処理も追加しやすい。

163:デフォルトの名無しさん
08/03/09 11:36:30
>>161
あれはプロトタイプであってAdobeが使っていたものとは違うけどね。
けどかなり大きな本格的な実装。
> A partial implementation of a prototype compiler written in
> ActionScript, which will be developed by the open source community to
> implement all of the ECMAScript 4th edition specification. This will
> be a "self-hosted" compiler that is written in the language it compiles.
URLリンク(www.mozilla.org)

164:デフォルトの名無しさん
08/03/09 11:41:50
URLリンク(hg.mozilla.org)

165:デフォルトの名無しさん
08/03/09 13:29:38
むしろこっち
URLリンク(mxr-test.landfill.bugzilla.org)
This directory contains code for an ES4 compiler for tamarin
written in ES4.

166:デフォルトの名無しさん
08/03/13 00:00:18
ecma-262やjavascriptでカリー化ってどうやろう?
数学的に考えてカリー化できればラムダ式使って関数宣言なしに全コード書けると思うんだけど。

167:デフォルトの名無しさん
08/03/13 01:49:57
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
URLリンク(nanto.asablo.jp)
URLリンク(blog.livedoor.jp)
この辺で<カリー化

実用上は部分適用で十分な気がするけども。


168:デフォルトの名無しさん
08/03/14 14:34:06
>>167
便利だね
pythonが便利なモジュール沢山あるからそっち行ってしまったけど
c++に慣れている人にはこっちの方が書きやすい

169:デフォルトの名無しさん
08/03/15 11:30:47
カリー化とラムダ式オンリーだと書いてて楽しいじゃないか。
ブックマークレットでも使えるし。

Rhinoのes4実装まだ〜?

170:デフォルトの名無しさん
08/03/15 12:15:36
es4はプロトタイプ言語の特徴を無視してる感じで嫌いなのは俺だけ?

171:デフォルトの名無しさん
08/03/15 13:31:22
俺は好き。

172:デフォルトの名無しさん
08/03/15 14:56:57
>>170
俺も3の方が好きだ。
同じ言語だと思うから嫌いとか思うわけで
もう完全な別言語だと思うといいと思うよ…

173:デフォルトの名無しさん
08/03/15 15:12:23
ECAMScript4はpackageが入ったから、
CPANみたいなのができて大爆発だと思う。
perl6はもちろんruby, pythonも食っちゃうかも。

174:デフォルトの名無しさん
08/03/15 17:22:20
それはないな。

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

これがデスクトップアプリケーション作るための言語ならこれくらいの仕様で良いんだが・・・。

175:デフォルトの名無しさん
08/03/15 17:50:37
逆に必要ないのはes3にしがみついているプログラマになってきちゃった…

176:デフォルトの名無しさん
08/03/15 21:09:40
HTML5と絡んでWebアプリケーションを作るための言語にしたいんじゃないの。

177:デフォルトの名無しさん
08/03/15 23:13:42
ES3のプロトタイプ指向のシンプルな美しさがES4には無いね。

178:デフォルトの名無しさん
08/03/16 01:12:53
>>117
だからといって、
URLリンク(javascript.crockford.com)
URLリンク(wiki.ecmascript.org)
これもあんまり。部分的にはいいとこもあるけど、なんかいいかげんで。

179:デフォルトの名無しさん
08/03/16 08:15:31
クラス使いたければJavaのアプレットでも作ってろっての。
JS/ESは言語仕様の無軌道な拡張よりも処理系の実装の改善をしていってほしい。
言語仕様をいじるのは、せめてpythonと比較になるぐらいの速度が出てから。

180:デフォルトの名無しさん
08/03/16 09:24:06
>>164


181:デフォルトの名無しさん
08/03/16 10:33:36
>プログラミング言語について語るときに仕様と実装という区別のついてない人が多すぎる。
URLリンク(cl-www.msi.co.jp)

182:179
08/03/16 11:13:41
>>181
実際問題として仕様と実装の区別を間違えているのがes4のstatic typingを始めとする
パフォーマンス向上のための言語仕様拡張でしょ。

それよりも、パフォーマンス向上は実装の問題として扱って、
せめて他のdynamic typingな言語の処理系のパフォーマンス程度にマトモな処理系を
実装/普及させるのが先だろ、というのが>>179の主旨。わかりにくてスマソ。

183:デフォルトの名無しさん
08/03/16 12:35:33
static typingにはsafe programmingというのもあるわけで…

184:デフォルトの名無しさん
08/03/16 13:12:36
消火器を売りつけるようなもんか

185:デフォルトの名無しさん
08/03/16 13:41:02
>>183
ところがJS/ESにstatic typingを導入しようとしている人達は、
static typingをAPIに適用してパフォーマンスを稼いで
ユーザスクリプト側ではdynamic typingのままでいいと言っている。

safe programmingのためならば、ユーザスクリプト側にこそ
static typingが必要だと思うのだがね。

186:デフォルトの名無しさん
08/03/16 13:58:14
動的型言語はコンパイラによるチェックではなくテストケースによる
安全性のチェックを行うという事になっている。そこにコンパイラに
よるチェックを入れた方がより簡単に安全性を増せるよと主張するのは
野暮天。

187:デフォルトの名無しさん
08/03/16 15:45:57
多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
ならんのだから、はじめから型情報入れられるようにした方が楽でないか?

188:デフォルトの名無しさん
08/03/16 18:13:58
>>187
> 多態に対するテストケースででどーせ型に関する情報を埋め込まなきゃ
> ならんのだから、

え?あるコードで想定している「型」と具体的なクラスは全然別物なのが
dynamic typingのいいところでしょ…

189:デフォルトの名無しさん
08/03/16 18:38:50
そういう意見は全て退けられてes4が出来ましたw

190:デフォルトの名無しさん
08/03/16 18:44:10
そりゃそうだけど、あるコードで想定している「型」が明示されてるなら
具体的なクラスの方は楽できるし。
URLリンク(www.ecmascript.org)

191:デフォルトの名無しさん
08/03/16 18:55:44
es4は言語思想がes3までと違いすぎて同じ言語として扱う意味がない。

192:デフォルトの名無しさん
08/03/16 19:11:08
ちょうど今パート3だしes4のスレは分岐するか?

193:デフォルトの名無しさん
08/03/16 21:02:38
その前に1000行ったらな

194:デフォルトの名無しさん
08/03/16 21:21:24
>>191
禿同。


195:デフォルトの名無しさん
08/03/16 21:48:11
実は言語思想などはじめから無かったw

196:デフォルトの名無しさん
08/03/16 22:37:08
最初はNetscapeの看板機能になるためだけの言語だったからな。

197:デフォルトの名無しさん
08/03/16 22:52:07
Live Object という名前の時は輝いていた

198:デフォルトの名無しさん
08/03/17 00:40:59
>>196>>197
Live Object はわからないが、古いこと知ってそうだから聞いてみる。
最初っから .prototype スロットって在ったの?

199:デフォルトの名無しさん
08/03/17 01:08:03
>>197
LiveScriptじゃないの?

>>198
手元にあるJSのリファレンス本みると、prototypeはIE4.0、NS3.0からの対応みたいだから、
バージョン的に言うとJavascript1.1からの対応らしい。
最初からあった訳じゃないと思うけど、当時を知らないから正確なところは分かりません。

200:デフォルトの名無しさん
08/03/17 02:45:06
Javascript 1.0になった時点で、
SunのSelfベースの言語になっているはずだけどな。
まだprototypeの機構を全て揃えてなかったのかも。

201:デフォルトの名無しさん
08/03/17 08:42:26
Live Documentのこといってんじゃないの?

202:198
08/03/17 13:15:28
>>199
prototype は Netscape 3.0 からじゃなかったかなーと記憶してたもんで、ありがとう。
んでちょっと調べてみた。

URLリンク(web.archive.org)
Netscape 2 からの変更
URLリンク(web.archive.org)
JavaScript 1.1 の prototype の説明

JavaScript 1.0 の文書は見当たらないけど、やっぱり Netscape 3.0 からっぽい。
で、Netscape 2.0 のインストーラ(n32e20.exe)探して、入れて確認したら、

javascript:function Foo(){};Foo.prototype.hello="hello";o=new Foo();alert(o.hello)
JavaScript Error:
prototype has no properties

だった。やっぱり 1.0 だと prototype 無いのね。
function 使ったユーザオブジェクトの生成はできたけど。
javascript:function Foo(name){this.name="2chneller"};o=new Foo();alert(o.name) // 2chneller

203:デフォルトの名無しさん
08/03/17 13:46:07
>>179>>182
URLリンク(mozillalinks.org)
実装も速くなってる、python 並みかは知らないが。

204:デフォルトの名無しさん
08/03/17 13:49:57
昔はprototypeは関数コンストラクタがnewされた後に作られた。

function obj{
//hoge
}

a = new obj():
a.prototype.foo=function(){//hoge}

------------------------------------

関数オブジェクト.prototype = hogeはエラー。
インスタンス.prototypeは可能。
javascript1.2までこのルールで1.3でecma-262準拠になって

関数オブジェクト.prototype = hogeが許されるようになった。

205:198
08/03/17 16:47:14
そのようで
------
function Foo(){}
o=new Foo() //*1
Foo.prototype.hello="hello"
o=new Foo()
alert(o.hello)
------
Netscape 2.0 -> Error: prototype has no properties
Netscape 3.0 -> ok: hello
*1 の行がないと Error: Function.prototype has no property named 'Hello'

Netscape 4.0(js1.2 だよね。not 4.06以上) だと *1 なしでもいけるけど、
プラットフォームによるかも。やってみたのは全部 win32

Ajax 以前というか Netscape4 までのネスケ全盛時代はあんまり
prototype 使ってなかったと思うんだけど、納得。

206:デフォルトの名無しさん
08/03/20 14:12:30
nn4.0はjs1.3だぞ

207:デフォルトの名無しさん
08/03/20 20:06:48
NN4.0〜4.05 - js1.2
NN4.06〜NN4.xx - js1.3
だと聞いてるんだけど。
URLリンク(www.din.or.jp)
とか

208:デフォルトの名無しさん
08/03/23 14:25:10
3月頭にRhino1.7R1が来たけどここであがってないね。
debuggerキーワードが有効になってイテレータ・ジェネレータが使えるようになったけど
SpiderMonkeyでもまだ1.7は浸透してないかな。
なんかPythonぽくなってきたね。

209:デフォルトの名無しさん
08/03/23 16:26:50
>>208
気づいてなかった
letも実装されてるみたいだし
これはいいね

210:デフォルトの名無しさん
08/03/23 21:26:56
次の問いに答えなさい。
new function() {
var window = {window:null};

// ここでGlobalオブジェクトであるwindowを取得しなさい。(10点)
}
灘中学入試問題 2008年度

211:デフォルトの名無しさん
08/03/23 22:04:45
ブラウザの実装は板違い

212:デフォルトの名無しさん
08/03/24 18:05:15
1.7すごいな。フィボナッチ数列が恐ろしく簡単にかけるぞ。

function fib()
{
var [a, b] = [0, 1];
while (true) {
yield b;
[a, b] = [b, a + b];
}
}

var f = fib();
// 100 以下のフィボナッチ数を表示
for (let i in f) {
if (i > 100) break;
print(i);
}

213:デフォルトの名無しさん
08/03/25 00:16:15
今頃どうしたんだ? 1.7の新しい処理系でも出た?

214:デフォルトの名無しさん
08/03/25 01:01:12
>>213
>>208

215:デフォルトの名無しさん
08/03/29 02:55:35
greacemonkeyで1.7が動いたらいいなあ

216:デフォルトの名無しさん
08/03/30 07:54:02
>211
そんなの書いたら構文エラーです。
正解は
valueOf();
もしくは
eval.call(null,"this");
他にもあるかもしれません、さすが灘中学

217:デフォルトの名無しさん
08/03/30 10:56:50
板違いが理解できん馬鹿は消えろ

218:デフォルトの名無しさん
08/03/31 00:59:46
eval.call
これはダメだろ?

219:デフォルトの名無しさん
08/03/31 11:22:25
そういう細かいこといいだしたらブラウザの実装はGlobalオブジェクトが複数ある時点で仕様満たしてないとか色々突っ込みどころがある。

220:デフォルトの名無しさん
08/03/31 11:23:21
このスレは細かいところいっていいんじゃない?

221:デフォルトの名無しさん
08/03/31 12:36:31
eval.call(null,'this')はECMA的に言っても駄目だろ。落第。

222:デフォルトの名無しさん
08/03/31 14:19:27
>eval.call(null,'this')
まあこれは力技のひどいコードであることは違いないけど

223:デフォルトの名無しさん
08/03/31 14:41:03
力技とかじゃなくて、それでGlobalとれたらECMA違反

224:デフォルトの名無しさん
08/03/31 16:57:00
>>216
対象がブラウザっぽいのにどっちもIEで動かないので落第です先生。
(function(){ return this })();


225:デフォルトの名無しさん
08/03/31 17:03:04
JScriptはそもそもコンテキスト周りEcma満たしてないよ

226:デフォルトの名無しさん
08/03/31 17:06:04
RhinoはトップレベルコンテキストからGlobalでアクセスすると取れるんだよね。
var foo = new Global();なんてやると・・・

227:デフォルトの名無しさん
08/03/31 21:43:39
>>221
どこがだめなん?
15.1.2.1を読む限りでは直接呼出し以外をエラーとするのは
mayであってmustではないようだけど。

228:デフォルトの名無しさん
08/03/31 23:36:47
10.2.2

229:デフォルトの名無しさん
08/04/01 00:27:17
var a = this;
var b = eval.call(null, 'this');
var c = a == b;
cがfalseになることがある実装はECMA-262 3rdに違反。
cがどんなときもtrueになる実装はECMA-262 3rdに違反してない。
bの行で例外が投げられる実装もECMA-262 3rdに違反してない。
だよね。


230:デフォルトの名無しさん
08/04/03 18:59:10
おまいら、オレの理解を超えた会話はするな。これは命令だ。

231:デフォルトの名無しさん
08/04/03 20:08:48
>>230
理解できる範囲を明示してくだしあ><

232:デフォルトの名無しさん
08/04/03 20:21:44
print('hello, world');

233:デフォルトの名無しさん
08/04/03 22:03:06
>>230
その命令は、どのコンテキストで実行する?

234:デフォルトの名無しさん
08/04/03 22:13:58
ここじゃね?
eval.call(null, 'this');

235:デフォルトの名無しさん
08/04/10 21:32:53
正直1.6以降ついて行けませんってのどれくらい居る?

236:デフォルトの名無しさん
08/04/11 15:38:09
ECMAScript 1.6 ですか?

237:デフォルトの名無しさん
08/04/11 20:06:42
ついていけないっつーか、
いつになったら新しい機能を使ってもいいか
タイミングをはかりかねている。

238:デフォルトの名無しさん
08/04/11 20:26:02
ローカルならいいけど、
やっぱ公になってるWebでは使えないよな。
あと3年くらい?

239:デフォルトの名無しさん
08/04/12 03:20:12
最長一年半じゃない?
ブラウザをアップデイトしない選択肢はないから。

240:デフォルトの名無しさん
08/04/12 07:31:57
>>239
いや、結構古いまま使ってる人多いよ。

241:デフォルトの名無しさん
08/04/12 10:19:39
うちのアクセスログ、今でもIE5とかある。

242:デフォルトの名無しさん
08/04/12 11:53:15
>>241
NS4.7とか言うのもまだあったりするからなぁ

243:デフォルトの名無しさん
08/04/12 11:55:04
IEなんて2のころからまともに使ったことないが
シェルに食い込んでるからバージョンアップだけはやってるな。

244:デフォルトの名無しさん
08/04/12 18:02:45
マルチプラットフォームに使えるgeckoとwebkitとoperaだけ確認しておけばok。

245:デフォルトの名無しさん
08/04/12 18:15:22
IEはどのみちJavaScript動かないしね。

246:デフォルトの名無しさん
08/04/12 20:37:03
JScriptってコンテキスト周りでecmaすら満たしてなかった気がするが

247:デフォルトの名無しさん
08/05/07 20:28:36
es4はどうよ?
俺は正直イラネ

248:デフォルトの名無しさん
08/05/07 21:41:59
ActionScript同様に扱える予定なんだろ、方向性自体は悪くないんじゃね?
まあ現物見てみないとアレだが、長い目で期待してるよ
どうせIEでも使える日は当面来ない

249:デフォルトの名無しさん
08/05/07 23:35:02
>>247
別の言語だと思ってるので遠くから見てる。
>>248 も言ってるようにWebで使いものになるのは当分先だろう…

250:デフォルトの名無しさん
08/05/08 06:15:58
es3のほうが言語として美しい。es4はキメラ化した愚作。

251:デフォルトの名無しさん
08/05/08 17:37:52
確かに言語としてはes3の方が美しいよな。
クラスベースにしたのにプロトタイプのこすとかイラネ。
まあIEがまともに実装することは永久にないのでwebでは日の目見ないだろうな。
標準クラスライブラリが多すぎるのも問題だ。

252:デフォルトの名無しさん
08/05/08 18:12:50
とはいえprototype.jsとか使って疑似クラスとか定義しているのが主流なのを見ると、
言語の機能としてクラスベースを取り入れるのも正しい方向性っちゃそうなのかもしれない。
既存のクラスをprototypeで拡張できなくなるのはちょっと寂しいけどな。

253:デフォルトの名無しさん
08/05/08 18:25:13
prototype.jsって別にいらないと思うんだがそんなにプロトタイプベースは嫌いかね?

254:デフォルトの名無しさん
08/05/08 18:39:39
今のところ既存のクラスをprototypeで拡張出来るはずだが。

es4 は今がりがり仕様を削ってるところなので様子見。
es3.1 がちっとづつ進んでて興味深い(MS主導)

255:デフォルトの名無しさん
08/05/08 20:23:02
>>253
俺もprototype.jsは嫌い。
つーか、マトモな感覚してたらあんなwarning出まくりのライブラリなんて気味悪くて使えん。

256:デフォルトの名無しさん
08/05/09 01:10:40
そのマトモな感覚ってのがecmaの仕様理解しててプロトタイプベースも使いこなしてるって事だから
実際にajaxアプリ書いてる連中には居ないだろうな。


257:デフォルトの名無しさん
08/05/11 04:26:31
このスレ見て俺ってまだ勉強不足なんだなって思ったよ
ああ・・・

258:デフォルトの名無しさん
08/05/13 13:49:16
似非クラスベースやりたいだけならprototype.jsなしでも
継承モデルとか作れなくもないしな
カプセル化の面で多少悩みは残るけど

でもjQueryは手放せない

259:デフォルトの名無しさん
08/05/13 13:56:49
継承させる場合はFunction.apply()使えば良いけどミックスインしか出来ないんだよな。

260:デフォルトの名無しさん
08/05/14 09:11:18
Yahoo UIってどうよ
めちゃくちゃメソッド・プロパティあるけど

261:デフォルトの名無しさん
08/05/14 11:57:47
ecma-262関係ないな。

262:デフォルトの名無しさん
08/06/19 16:14:32
fx3がリリースされてjs1.8が登場したわけだが・・・rhinoはまだか!?

263:デフォルトの名無しさん
08/06/19 20:20:40
1.8以前に1.7R2がまだ…
URLリンク(blog.norrisboyd.com)

264:デフォルトの名無しさん
08/06/19 22:08:11
SpiderMonkey の 1.8 が出てからじゃない?そうでないと仕様確定できないとか?
Fx 3.0.* が結構出てからでしょ。

URLリンク(developer.mozilla.org)
もまだいまいち、JSON, Slice Syntax は js には入ってないし、
URLリンク(bugzilla.mozilla.org)
が入ってない。

265:sage
08/06/29 22:55:41
tamarin付属のescにて、

es> eval("2/1");
SyntaxError: (EVAL CODE): Binding form not legal: {/*NamespaceFixture*/ 'ns': {/*InternalNamespace*/ 'name': '<#internal (EVAL CODE)>'}}

となるのはなぜですか?

266:デフォルトの名無しさん
08/06/29 23:43:48
まだ文法パースすら出来てないんじゃない?
RIもそんな感じだし。

267:デフォルトの名無しさん
08/06/30 00:03:49
文法ころころ細かく変わってるからおかしくなるのは仕方ないんだけど、
数値まわりは lexer がおかしいのかも。
RI-M2 で function test2d {...} とやったらエラー出たのはびっくりした。
(2d で数値リテラルと解釈したらしい、なんじゃそら)

268:デフォルトの名無しさん
08/06/30 15:03:08
>>267
function test2d() { ... }
じゃないんですか。

269:デフォルトの名無しさん
08/06/30 17:32:35
>>268
typo った。スマン

270:デフォルトの名無しさん
08/07/06 23:17:16
無名関数を #(x,y)と書く処理系があったのですが、他でも同じように書いて動くのでしょうか?

271:デフォルトの名無しさん
08/07/06 23:24:58
初めて聞いたkwsk

272:デフォルトの名無しさん
08/07/07 13:13:42
右シフト演算子、「符号ありが >> で、符号なしが >>>」に
決めたのはなぜだろう。
「符号なしが >> で、符号の分を更にシフトする方が >>>」って考えると
しっくり行くのに。っつーかそう誤解してた。
更に、逆に解説してるサイトもある。

273:デフォルトの名無しさん
08/07/07 13:56:35
>>272
符号の分をさらにシフトすると何がうれしいんだい?

274:デフォルトの名無しさん
08/07/07 14:13:07
>>273
質問の意図がよく判らないけど、
負の数を負のまま扱えるから嬉しい。
算術シフトの名の通り。

275:デフォルトの名無しさん
08/07/07 14:25:28
>>274
負の数のまま扱いたければ、普通に算術シフトを使う処理系で>>すればいいだけ。
何かカンチガイしてないか?

276:デフォルトの名無しさん
08/07/07 15:20:24
よく判らんなー。
元々は>>272の「>>と>>>を誤解してる人がいる」って話なのに、
>>273が「何がうれしい」と謎の質問をしてるのが、こじれの発端だ。
嬉しい/嬉しくないっていう評価軸の話は元の質問には無関係。
>>275も何か変な事を言ってる。
算術右シフトも論理右シフトも、ECMAScriptの話であって、
「そういう処理系で」って話は、どう飛躍してるんだ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5076日前に更新/110 KB
担当:undef