ECMAScript デス 3
- 1 :デフォルトの名無しさん:2007/09/19(水) 09:08:01
- 《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
- JavaScriptCore(KJS) は yacc だけどな。ES4 はしらんけど。
http://trac.webkit.org/projects/webkit/browser/trunk/JavaScriptCore/kjs/grammar.y
http://websvn.kde.org/trunk/KDE/kdelibs/kjs/grammar.y
- 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
- >>55
- 59 :49: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
- http://interglacial.com/javascript_spec/a-11.html#a-11.1.5
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.1.5
確かに Identifier は文字列に変換されるけど
http://interglacial.com/javascript_spec/a-7.html#a-7.6
http://interglacial.com/javascript_spec/a-7.html#a-7.5
Identifier が予約語だとダメでしょ。
- 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
- ftp://ftp.mozilla.org/pub/mozilla.org/js/
- 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で気軽に勉強というわけにはいかないみたいですね。
ありがとうございました。
- 109 :105,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
- 関数型的要素は意識する必要ないべ
それに、既に多くの人間が気軽に使っていると思うけど
- 116 :111: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では変数のスコープの扱いがすこし違うくらいか
- 119 :111: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
- >>125
うん。16bit まで。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/6_Source_Text.html#section-6
http://liosk.blog103.fc2.com/blog-entry-72.html の [追記]
将来(ES4)に関してはこの辺
http://wiki.ecmascript.org/doku.php?id=proposals:update_unicode
https://bugzilla.mozilla.org/show_bug.cgi?id=320500
- 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 を期待したんですけど。
- 129 :128: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!
- 136 :sage: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)とかならたまに見るな。
- 142 :sage:2008/02/28(木) 00:58:02
- ちょい脱線するけど
[].slice.call(arguments) より Array.apply(arguments) のほうが好き
- 143 :sage: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
- つ http://hg.mozilla.org/actionmonkey/
- 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
- http://d.hatena.ne.jp/m-hiyama/20051213/1134446855
http://d.hatena.ne.jp/kilrey/20051213
http://nanto.asablo.jp/blog/2008/02/14/2626240
http://blog.livedoor.jp/dankogai/archives/51002542.html
この辺で<カリー化
実用上は部分適用で十分な気がするけども。
- 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
- 182 :179: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のこといってんじゃないの?
- 202 :198: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が許されるようになった。
- 205 :198: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
- >>213
>>208
- 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
が入ってない。
- 265 :sage: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の話であって、
「そういう処理系で」って話は、どう飛躍してるんだ。
- 277 :272: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が慣例にあわせてるってのはわかってて聞いてるんだと思うんだけど…
数値型に対する演算子なんだから算術シフトの方が自然な動作で
論理シフトの方が例外的な振る舞いだよな…
「符号の分を更に…」って感覚はちょっとわからないな…
シフトしてるビット数は算術のほうが少ないわけだし
- 284 :283: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
- ttp://tech.slashdot.org/article.pl?sid=08/08/16/1552227
ttps://mail.mozilla.org/pipermail/es-discuss/2008-August/003400.html
- 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 抜きだと面倒そうなんだよなぁ
- 346 :345: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
- ttp://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html
もう Nightly に入ってるって聞いたぜ
- 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対象単位とする手法。
- 383 :190.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にして、
参照できるようにしてくれよ!
- 384 :190.90.128.210.bf.2iij.net :2008/09/10(水) 17:15:45
- v8のソース、10万行ありますね。
- 385 :p31195-adsau15honb9-acca.tokyo.ocn.ne.jp :2008/09/10(水) 20:39:48
- tamarinが15万行ぐらいだし普通じゃね?
- 386 :デフォルトの名無しさん:2008/09/10(水) 21:53:29
- なんでfusianasanなの?
- 387 :385: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 を介する動的ロードするとコストが増加するってこと。
互換性のことがあるから、切るわけにもいかんのでしょ。
- 404 :399: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
- この辺の話になるのかなぁ
http://bugs.ecmascript.org/ticket/376
[RegExp: Change behavior for backreferences to non-participating groups]
http://web-graphics.com/2007/09/05/a-quick-js-quizz-for-anybody-who-think-they-know-regex/
http://web-graphics.com/2007/11/26/ecmascript-3-regular-expressions-a-specification-that-doesnt-make-sense/
https://mail.mozilla.org/pipermail/es-discuss/2007-September/thread.html#4513
https://mail.mozilla.org/pipermail/es-discuss/2007-September/thread.html#4574
https://mail.mozilla.org/pipermail/es-discuss/2008-September/thread.html#7355
- 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
- >>439
>>370 >>375 >>380
- 446 :443: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
- 461 :not 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
- >>471
https://wiki.mozilla.org/XPCOMGC
http://hg.mozilla.org/users/bsmedberg_mozilla.com/gcmonkey
http://steps.dodgson.org/?date=20081012
- 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による整理で基本的にはうまくいっている。
- 486 :482: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スレ池
- 490 :488: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
- 494 :488: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
- 498 :496: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なのではないかと。
- 565 :562: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しかオーバーライドされてないんだが結局これも実装依存なんだろうか?
- 567 :562: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って形式でしょう。
- 573 :567: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
私の場合は、ロケールの慣習に該当するというのは「○月×日」みたいな感じに返してくれるのが正しい様な気がしたのですが、んー知識不足です。正直言って。
- 574 :567: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.
- 576 :574: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
- >>577
WD 読んで我慢しる
ttp://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft
- 579 :デフォルトの名無しさん:2009/03/19(木) 16:07:40
- ははは
132 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
+ JavaScript の質問用スレッド vol.74 + [Web制作]
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)