元スレ+ JavaScript の質問用スレッド vol.80 +
JavaScript覧 / PC版 /みんなの評価 :
951 = :
>>946
了解です。
>>948-949
面白い方法ですね。Function#name を使わないのは独自拡張だから(IE で使えない)からかな?
name - MDC
http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/name
953 = :
ありがと。
他言語での経験から.nameしてみたけどIE8だったので見事に無理でした。
一般公開を目的としたサイトでIEで動かないような構築をしている人ってそんなに多いの?。
954 = :
クロスブラウザを考慮するなら、こんな感じかな。
function getFunctionName (func) {
var functionBody;
functionBody = /^function\s+([^\s(]+)/.exec(func.toString());
return functionBody ? functionBody[1] : functionBody; // Function#name || null
}
var a = function abc () { ; };
console.log(a.name || getFunctionName(a));
>>953
Function#name を得る標準的な方法はないので独自拡張に頼るしかないんだと思います。
IE8- はまともな方法では得られないんじゃないかな…。(IE9 はわかりませんが)
# Function.prototype.name を拡張できたら面白そうではありますが。
955 = :
>>954
参考になります
956 = :
しまった…。匿名関数を考慮していませんでした。
匿名関数の Function#name は空文字を返すようです。(Google Chrome 7 で確認)
var a = function () { ; };
console.log('"' + a.name + '"'); // ""
というわけで、>954の修正版。
function getFunctionName (func) {
var functionBody;
functionBody = /^function\s+([^\s(]*)(?=\()/.exec(func.toString());
return functionBody ? functionBody[1] : null; // Function#name || null
}
var a = function () { ; };
console.log('"' + getFunctionName(a) + '"'); // ""
本来は IdentifierName 生成規則に沿った方がいいと思いますが、解読に時間がかかりそうだったので省略しました。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#Identifier
http://sideshowbarker.github.com/es5-spec/#x7.6
# Function.prototype.name を拡張するためにはFunctionコンストラクタを置き換えなくてはならず…、かなり面倒ですね。
957 = :
テンプレ論議している余裕はないので、新たな提案であればそれは
次回回しということでお願いしたいです。次スレは975超えたら。
959 = :
http://developer.mozilla.org/ja/DOM/windowに掲載されているwindowオブジェクトってw3cでは掲載されてないのでしょうか?
alertとかnavigatorとかそういうメソッドも見当たりませんでした
http://www.w3.org/DOM/Activityからたどれる所は全て見たのですが探し方が悪いのでしょうが見当たりませんでした
DOMの本家の情報は他にあるのでしょうか?
960 = :
DOMじゃないからでしょ
962 = :
>>958
結局結論出なかったのかなんかで現状があるんでは。とりあえず
今スレと同じにしておいて次スレ早々に確認しませんか。
963 = :
>>959
HTML5のドラフトを見るんだ。
964 = :
>>959
例えば、window.alert は MDC では "DOM Level 0" と説明されています。
---
仕様
DOM Level 0。どの標準にも属しません。
http://developer.mozilla.org/ja/DOM/window.alert
---
---
"DOM Level 0"
"DOM Level 0" は W3C が DOM の標準化を始める前にブラウザ間で共通だったオブジェクトモデルです。
・Netscape の クライアントサイド JavaScript ガイド(Javascript と "DOM Level 0" を扱います)
・Netscape の クライアントサイド JavaScript リファレンス(Javascript と "DOM Level 0" を扱います)
・JavaScript スクリプティングリソース - "ダイナミック HTML" と JavaScript に関するさまざまなサイトへのリンク
http://www.mozilla-japan.org/docs/web-developer/#scripting
---
"DOM Level 0" は DOM 仕様としては策定されていませんが、デファクトスタンダードとして確立されている仕様を指します。
(実際には window.open を IE が独自拡張していたりしますが、概ね全てのブラウザで同じ挙動を示します。)
この辺りの曖昧さは HTML5 で標準化される予定です。
W3C の HTML5 はhttp://www.w3.org/TR/html5/ にありますが、まだ最終草案段階なので WHATWG (http://whatwg.org/html5 ) の方が最新の情報が手に入ります。
6.2 The Window object
http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#the-window-object
HTML5 はAudioオブジェクトなど新しい技術が注目されがちですが、実際にはデファクトスタンダードとして確立された仕様を改めて標準化しているものも数多く含んでいます。
少し前に話題になった innerHTML もそうです。innerHTML は標準化こそされていませんでしたが多くのブラウザで(ほぼ)同じ振る舞いをします。
これらは既にあるブラウザの実装に合わせて HTML5 で標準化されているので、未だ最終草案段階とはいえ勧告までに大きな変更があるとは思えません。
965 = :
> think49
簡潔に書け
IEはコメント除去しないどころじゃない
function A, B(){
}
alert([A,B]);
function A.prototype.a(){
}
alert(new A().a);
IEだと動くんだぜコレ
966 = :
>>962
いいですね。テンプレ議論をスレ最後でやるから間に合わなくなるっぽいですしね。
967 = :
>>959
Window Object 1.0 (W3C Working Draft)
968 = :
>>965
それを判断するのは質問者なのでは?
詳しい回答が冗長に感じる人がいれば、簡潔な回答では物足りない人もいるでしょう。
それがわからない以上、簡潔に書いても詳しく書いても同じだと私は思いますが。
970 = :
>>968
独自研究は他所でやれ
972 :
長文はやめて欲しいが質問しまくる姿勢は尊敬するわ
973 = :
嫌いじゃないわこういうの
いかにも初心者同士が教えあうって空気が
974 = :
load("url",false,funcname,"string");で呼んだ場合に2つ目のalert(arguments);がobjectに
なってしまうのですがこれはどうしてでしょうか?。
function load(url, async, callback, arguments) {
alert(arguments);//
m_xmlhttp.open("GET", url, async);
m_xmlhttp.onreadystatechange = function() {
if (m_xmlhttp.readyState == 4 && m_xmlhttp.status == 200) {
alert(arguments);//
callback(m_xmlhttp.responseText, arguments);
}
}
m_xmlhttp.send();
}
975 = :
argumentsという名前がいけない
argumentsは予約語では無いが関数を呼び出した時に
関数内で自動的に生成されるオブジェクト
生成されたオブジェクトでは呼び出し元とか引数の値等が入ってる
976 = :
>>975
そういう事でしたか、納得しました。
ありがとうございます。
977 = :
全くの初心者で本読んでもほとんど理解できずに居ましたが、このスレの皆さんの助言によってようやくJavaScriptを扱えるようになり、本当に助かりました
もう言葉じゃ表現出来ないほどの感謝の気持ちで一杯です
本当にありがとうございました
978 = :
いいってことよ~
979 = :
for(var i = 0; i<5 ; i++){
var a = $(document.createElement("div"));
with({i:i}){
a.click = function(){ alert(i); };
}
a.text("Withのてすと");
$("body").append(a);
}
>>781-あたりでブロックスコープについての話題があったから調べてみたらwithで値を束縛できることを知ったのだけど、
使わないほうがいいという事も書いてあったけど使わないほうがいい理由って何かあったりするの?
980 = :
スレ立て人ですが、スレ立て規制で建てられないです…
どなたかお願いします。テンプレの変更は今回はなしですので…
981 = :
デザインパターンを勉強中なのですが、JSでVisitorパターンをどういう風に実装していいか悩んでいます
型によるオーバーロードができないのでディスパッチ部分の記述がどうしても汚くなってしまいそうです
なにか良い方法はないでしょうか
982 = :
デザパタといってもよく使うパターンがあってね
結論からいうとVisitorパターンなんて使わないっすよね
983 = :
>>982
なるほど
なら別に実装方法を考える必要はなさそうですね
ありがとうございました
984 = :
>>981
JSについてはこの人の言うこと聞いておいていいと思うよ
http://blog.livedoor.jp/dankogai/archives/51066288.html
んじゃトイレ行って一休みしたら次スレ立ててくる
985 = :
987 = :
こっちが埋まってもいないのに誘導すんなタコ
988 = :
お前が残りを全部埋めれば解決
989 = :
>>986
乙
990 = :
>>979
with は指定したオブジェクトをスコープチェインの先頭に追加するだけだから、
・変数の名前解決の効率低下の原因になり得る
・読むときに、変数がどの時点で解決されるか分かりにくい
それに加えて、
・ES5 の strict mode では使用できない
かな。
991 = :
>>990
なるほどありがとう
992 = :
>>979はwithで遅くなる典型例
ま、ループのたびに$("body")する時点で速度は度外視なんだろうが
993 = :
うめ
994 = :
| \
|Д`) ダレモイナイ・・オドルナラ イマノウチ
|⊂
|
♪ Å
♪ / \ ランタ タン
ヽ(´Д`;)ノ ランタ タン
( へ) ランタ ランタ
く タン
♪ Å
♪ / \ ランタ ランタ
ヽ(;´Д`)ノ ランタ タン
(へ ) ランタ タンタ
> タン
995 = :
うめ
999 = :
モウツカレタヨ・・・
1000 = :
1000
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.103 + (1001) - [95%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.102 + (1001) - [95%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.120 + (1002) - [95%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.101 + (1001) - [95%] - 2012/7/16 14:15
トップメニューへ / →のくす牧場書庫について