私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.100 +

みんなの評価 :
レスフィルター : (試験中)
>>850
中味がオブジェクトか否かを見ながら再起
中味がオブジェクトか否かを見ながら再起
すいません。わからないのでコード教えて下さい。
再帰しすぎるとよくないという話も聞きましたが。。多分、実際のコードでは階層が
千におよぶと思います。
再帰しすぎるとよくないという話も聞きましたが。。多分、実際のコードでは階層が
千におよぶと思います。
>>853
大雑把に書くとこんな
(function(obj){
for(var n in obj){
if( obj[n]がオブジェクト ) arguments.callee(obj[n]);
else obj[n]を煮るなり焼くなり;
}
})(走査したいオブジェクト);
オブジェクトが大きすぎて実行速度が現実的でないならば
再帰するときにsetTimeoutとか挟んで非同期実行的な感じにするとか
大雑把に書くとこんな
(function(obj){
for(var n in obj){
if( obj[n]がオブジェクト ) arguments.callee(obj[n]);
else obj[n]を煮るなり焼くなり;
}
})(走査したいオブジェクト);
オブジェクトが大きすぎて実行速度が現実的でないならば
再帰するときにsetTimeoutとか挟んで非同期実行的な感じにするとか
>>853
>再帰しすぎるとよくない
そんな、健康法みたいなw
古い言語や機械だと、再帰でスタックを食い潰す事があったから、
多分その事を言ってるんだと思う。
今時の言語や機械なら、よほど深くならない限りは大丈夫。
>再帰しすぎるとよくない
そんな、健康法みたいなw
古い言語や機械だと、再帰でスタックを食い潰す事があったから、
多分その事を言ってるんだと思う。
今時の言語や機械なら、よほど深くならない限りは大丈夫。
「再帰いくない」「いや問題ない」って聞いて
理由がわからないまま盲目的にどちらかを信じるのがよくねーですな
自分は深くなるときは>>854のようにsetTimeoutで遅延させるんだけど
もっと賢いやり方を教えて欲しい
理由がわからないまま盲目的にどちらかを信じるのがよくねーですな
自分は深くなるときは>>854のようにsetTimeoutで遅延させるんだけど
もっと賢いやり方を教えて欲しい
関数呼び出しで時間くうからウン万回と再帰するなら強引にループに直したほうがいいぜ
JSON.stringify(obj) して、文字列検索を…なんちゃって。
>>861
ああなるほど
ああなるほど
とりあえず、1000レベルの階層作ってスタックでたどってみました。
<!DOCTYPE html>
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var obj = new Object(); obj.a0 = 0;
for(var i = 1; i <= 1000; ++i) {
var o = new Object(); o['a'+i] = i; o['b'+i] = obj; obj = o;
}
var stack = []; stack.push(obj);
while(stack.length > 0) {
var e = stack.pop();
for(var k in e) {
if(e[k] instanceof Object) {
document.writeln('prop ' + k + ': object'); stack.push(e[k]);
} else {
document.writeln('prop ' + k + ': ' + e[k]);
}
}
}
</script></pre>
</body></html>
<!DOCTYPE html>
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var obj = new Object(); obj.a0 = 0;
for(var i = 1; i <= 1000; ++i) {
var o = new Object(); o['a'+i] = i; o['b'+i] = obj; obj = o;
}
var stack = []; stack.push(obj);
while(stack.length > 0) {
var e = stack.pop();
for(var k in e) {
if(e[k] instanceof Object) {
document.writeln('prop ' + k + ': object'); stack.push(e[k]);
} else {
document.writeln('prop ' + k + ': ' + e[k]);
}
}
}
</script></pre>
</body></html>
>>868-869 ぜひとも改良版の投稿を期待しますよ。
<title>???</title> の人のテンプレがHTML5仕様になってて和んだ
所々で枝分かれするように変更してみますた。
<!DOCTYPE html>
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var idn = 0, obj = {idn: 0}, level = 0, alt = false, thr = 0.05;
while(level < 1000) {
if(!alt) {
obj = {next: obj, idn: ++idn}; ++level; alt = Math.random() < thr;
if(alt) { obj.alt = {idn: ++idn}; }
} else {
obj.alt = {next: obj.alt, idn: ++idn, branch: true}; alt = Math.random() > thr;
}
}
var stack = []; stack.push(obj);
while(stack.length > 0) {
var e = stack.pop();
for(var k in e) {
if(e[k] instanceof Object) {
document.writeln('prop ' + k + ': object'); stack.push(e[k]);
} else {
document.writeln('prop ' + k + ': ' + e[k]);
}
}
}
</script></pre>
</body></html>
<!DOCTYPE html>
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
var idn = 0, obj = {idn: 0}, level = 0, alt = false, thr = 0.05;
while(level < 1000) {
if(!alt) {
obj = {next: obj, idn: ++idn}; ++level; alt = Math.random() < thr;
if(alt) { obj.alt = {idn: ++idn}; }
} else {
obj.alt = {next: obj.alt, idn: ++idn, branch: true}; alt = Math.random() > thr;
}
}
var stack = []; stack.push(obj);
while(stack.length > 0) {
var e = stack.pop();
for(var k in e) {
if(e[k] instanceof Object) {
document.writeln('prop ' + k + ': object'); stack.push(e[k]);
} else {
document.writeln('prop ' + k + ': ' + e[k]);
}
}
}
</script></pre>
</body></html>
たとえばこういうテストデータを…
for(var i = 1; i <= 1000; ++i) {
var o = new Object(); o['a'+i] = i; o['b'+i] = obj; o['c'+i] = obj; obj = o;
}
…って、レベルを1000とかするとえらいことになるが。
for(var i = 1; i <= 1000; ++i) {
var o = new Object(); o['a'+i] = i; o['b'+i] = obj; o['c'+i] = obj; obj = o;
}
…って、レベルを1000とかするとえらいことになるが。
jQuery mobileで、ページ要素ごとに使いたいJSファイルが異なる場合、
$('[data-role="page"]').live('pageshow', function(){
$.getScript("/js/page-1.js"); // jQMのページ単位で固有のJSをロードする
});
みたいに、getScript使わないと無理ですかね?
もっとスマートなやり方ってありますか?
$('[data-role="page"]').live('pageshow', function(){
$.getScript("/js/page-1.js"); // jQMのページ単位で固有のJSをロードする
});
みたいに、getScript使わないと無理ですかね?
もっとスマートなやり方ってありますか?
【jQuery】JavaScript ライブラリ総合質問所 vol.1
http://toro.2ch.net/test/read.cgi/hp/1327814124/
http://toro.2ch.net/test/read.cgi/hp/1327814124/
>>878
そもそもその設計が変だろ
そもそもその設計が変だろ
現場の流行ではこう書く。覚えておくといいよ。
window.onload = function() {
alert("bar");
};
window.onerror = window.onload;
window.onload = function() {
alert("foo");
null();
};
window.onload = function() {
alert("bar");
};
window.onerror = window.onload;
window.onload = function() {
alert("foo");
null();
};
今更window.onloadを使うん?
addEventListener, attachEvent が普通だと思ってた
addEventListener, attachEvent が普通だと思ってた
var a=[ {x:1} ];
var b=[], c=[];
b[0]=a[0], c[0]=a[0];
b[0].x++;
c[0].x++;
~~~~~~~~~~~~~~~~~~~~~~~
上記のコードを実行すると、b[0].xとc[0].xの中身が
IE9とFirefox13だと2ですが、Chrome19.0.1084.52だと3になってしまいます。
そもそも上記の b[0]=a[0] っていうのは代入ではないのですか?
コピーされる側のa[0]の中身はプロパティ数が増減するため
一つ一つb[0].x=a[0].xのように代入していく以外の方法で、安全に
全プロパティをコピーする方法があったら教えて下さい。
var b=[], c=[];
b[0]=a[0], c[0]=a[0];
b[0].x++;
c[0].x++;
~~~~~~~~~~~~~~~~~~~~~~~
上記のコードを実行すると、b[0].xとc[0].xの中身が
IE9とFirefox13だと2ですが、Chrome19.0.1084.52だと3になってしまいます。
そもそも上記の b[0]=a[0] っていうのは代入ではないのですか?
コピーされる側のa[0]の中身はプロパティ数が増減するため
一つ一つb[0].x=a[0].xのように代入していく以外の方法で、安全に
全プロパティをコピーする方法があったら教えて下さい。
896ですが、Chromeのバージョン確認したらアップデートがあって
19.0.1084.56になったら上記のコードの結果が両方とも2になりました…。
アップ前は確かに他ブラウザと同じコードで結果が3になっていた(参照渡しみたいに)のですが。
上のコードは問題ないって事でいいのでしょうか?
19.0.1084.56になったら上記のコードの結果が両方とも2になりました…。
アップ前は確かに他ブラウザと同じコードで結果が3になっていた(参照渡しみたいに)のですが。
上のコードは問題ないって事でいいのでしょうか?
何度もすいません、やっぱりChromeでは3のままでした。連レス申し訳ないです。
コードの問題点があったら教えていただけるとありがたいです。
コードの問題点があったら教えていただけるとありがたいです。
>>895
別の人が同じ方法でonloadに設定したら実行されないわけだが
別の人が同じ方法でonloadに設定したら実行されないわけだが
>>896
IEでもFirefoxでも3になると思うんだけど?
IEでもFirefoxでも3になると思うんだけど?



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.140 + (1001) - [97%] - 2019/9/19 10:45
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [95%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [95%] - 2018/5/2 18:30
トップメニューへ / →のくす牧場書庫について