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

みんなの評価 :
レスフィルター : (試験中)
幅の差のまとめって言ったって、文字・フォントごとに全部違うわけで。
これとかを参考に自分でコード書いてテーブルを作るのが早そう。
もはやJSとは全く関係ないけど。
http://dobon.net/vb/dotnet/graphics/measurestring.html
これとかを参考に自分でコード書いてテーブルを作るのが早そう。
もはやJSとは全く関係ないけど。
http://dobon.net/vb/dotnet/graphics/measurestring.html
innerHTMLのしっかりした仕様はHTML5でようやく定義されようとしてる
http://www.whatwg.org/specs/web-apps/current-work/multipage/apis-in-html-documents.html#innerhtml
以前はMSDNのドキュメントと
http://msdn.microsoft.com/ja-jp/library/ms533897
Mozillaのドキュメントぐらいしか、まとまった資料がなかった
http://developer.mozilla.org/ja/DOM/element.innerHTML
http://www.whatwg.org/specs/web-apps/current-work/multipage/apis-in-html-documents.html#innerhtml
以前はMSDNのドキュメントと
http://msdn.microsoft.com/ja-jp/library/ms533897
Mozillaのドキュメントぐらいしか、まとまった資料がなかった
http://developer.mozilla.org/ja/DOM/element.innerHTML
mouseleave、mouseenterが子要素に反応してしまう時があるがあれはなんだろう・・・
調べても有益な情報がない・・
調べても有益な情報がない・・
被リンクサービスはこれらの業者を掛け持ちするのがベスト!
http://hibari.2ch.net/test/read.cgi/hp/1251444817/964
http://hibari.2ch.net/test/read.cgi/hp/1251444817/964
thisは書き換え不可みたいなのですが
コメント部分で、aの中身を"fuga"にかきかえるようなことは出来ますか
a="hoge";
String.prototype.fuga=function(){ /* */ }
a.fuga();
alert(a);
コメント部分で、aの中身を"fuga"にかきかえるようなことは出来ますか
a="hoge";
String.prototype.fuga=function(){ /* */ }
a.fuga();
alert(a);
できないって言ってる人は初心者?
document.getElementsByTagName("script")[n].innerText
のmatch、sliceでできるじゃん
document.getElementsByTagName("script")[n].innerText
のmatch、sliceでできるじゃん
>>867 を最高に罵ってやろうと思ったけどアホらしくて全文消した
String.prototype.fuga=function(){ a="fuga" }
>868
いやいやJavaScriptみたいなネイティブから距離がある言語は、
思いきったことをしないといけない時があるんだよ
一見マヌケなようでも「できない」より「できる」方がいいでしょ?
ある意味視野を広げたいいコードだと思うよ
JavaScriptの特徴を活かしてるじゃん
まあお前さんはこんなんよりよっぽどいいコードを書けるんだろうから
文句言いたい気持ちはわかるよ
いやいやJavaScriptみたいなネイティブから距離がある言語は、
思いきったことをしないといけない時があるんだよ
一見マヌケなようでも「できない」より「できる」方がいいでしょ?
ある意味視野を広げたいいコードだと思うよ
JavaScriptの特徴を活かしてるじゃん
まあお前さんはこんなんよりよっぽどいいコードを書けるんだろうから
文句言いたい気持ちはわかるよ
なるほど。そういう方向だと、valueOfも書き換えた方が良いのかな
しかし、コンテキスト変換が行われないような場合
var pln= function(s){document.getElementById('stdout').innerHTML+=s+'<br/>';}
var a = new String('hoge');
pln(a);
a.fuga();
pln(a);
こうすると、hogeのままです
元々の質問の目的は、それが実現出来るか、よりも
どういうコーディングするのが良いかなってのの探索だったので
普通のやり方では無理そうってのがわかったので一応、満足です
みなさんありがとうございました。
しかし、コンテキスト変換が行われないような場合
var pln= function(s){document.getElementById('stdout').innerHTML+=s+'<br/>';}
var a = new String('hoge');
pln(a);
a.fuga();
pln(a);
こうすると、hogeのままです
元々の質問の目的は、それが実現出来るか、よりも
どういうコーディングするのが良いかなってのの探索だったので
普通のやり方では無理そうってのがわかったので一応、満足です
みなさんありがとうございました。
>>872
それやってみたけどこっちで変わってなかった理由が今わかった。
alertじゃなくてchromeのconsole.log使ってたわ。
ベストなのはa.fuga();の関数内でthisの名前="a"が判ればevalでも何でも使って完全に書き換えられるよね。
普通の関数ならブラウザを選ぶけどできるのになぁ。(function a(){return arguments.callee.name})()
それやってみたけどこっちで変わってなかった理由が今わかった。
alertじゃなくてchromeのconsole.log使ってたわ。
ベストなのはa.fuga();の関数内でthisの名前="a"が判ればevalでも何でも使って完全に書き換えられるよね。
普通の関数ならブラウザを選ぶけどできるのになぁ。(function a(){return arguments.callee.name})()
被リンクサービスはこれらの業者を掛け持ちするのがベスト!
http://hibari.2ch.net/test/read.cgi/affiliate/1261126390/565
http://hibari.2ch.net/test/read.cgi/affiliate/1261126390/565
し! _ -── ‐- 、 , -─-、 -‐─_ノ
活 噴 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) 噴 え
火 火 L_ / / ヽ 火 |
山 が / ' ' i !? マ
ま 許 / / く ジ
で さ l ,ィ/! / /l/!,l /厶,
だ れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ
よ る l | |_|_|_|/| / /__!__ |/!トi i/ レ!/ レ、⌒Y⌒ヽ
ね の _ゝ|/ ヽト、|/ ヽト、N' ヾ,ノ!
l は 「 l /\ /\ | | /\ /\ リ
ヽ | ノ! ! | _ノ
-┐ ,√ ! リ l ! 7/
レ'⌒ヽ/ ! | ○ _人__人ノ_ i ○ //!
人_,、ノL_,iノ! /! ヽ 「 L_ヽ ノ/
/ / lト、 \ ノ フ 了\ //
ハ キ { / ヽ,ト、ヽ/!`h ) ッ |/! 「ヽ, /) _ ‐'
ハ ャ ヽ/ r-、‐' // / |-‐ く サ ジ > / / `'//-‐、 /
ハ ハ > /\\// / /ヽ_ ! | ッ ( / / // / `ァ-‐ '
ハ ハ / /! ヽ レ'/ ノ ン > ' ∠ -‐  ̄ノヽ /
{ i l ! / フ / -‐ / ̄/〉 〈 \ /!
活 噴 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) 噴 え
火 火 L_ / / ヽ 火 |
山 が / ' ' i !? マ
ま 許 / / く ジ
で さ l ,ィ/! / /l/!,l /厶,
だ れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ
よ る l | |_|_|_|/| / /__!__ |/!トi i/ レ!/ レ、⌒Y⌒ヽ
ね の _ゝ|/ ヽト、|/ ヽト、N' ヾ,ノ!
l は 「 l /\ /\ | | /\ /\ リ
ヽ | ノ! ! | _ノ
-┐ ,√ ! リ l ! 7/
レ'⌒ヽ/ ! | ○ _人__人ノ_ i ○ //!
人_,、ノL_,iノ! /! ヽ 「 L_ヽ ノ/
/ / lト、 \ ノ フ 了\ //
ハ キ { / ヽ,ト、ヽ/!`h ) ッ |/! 「ヽ, /) _ ‐'
ハ ャ ヽ/ r-、‐' // / |-‐ く サ ジ > / / `'//-‐、 /
ハ ハ > /\\// / /ヽ_ ! | ッ ( / / // / `ァ-‐ '
ハ ハ / /! ヽ レ'/ ノ ン > ' ∠ -‐  ̄ノヽ /
{ i l ! / フ / -‐ / ̄/〉 〈 \ /!
仮引数の変更を実引数の変更に反映させる方法ってありますか?
hogeみたいにすると、グローバル変数が増えてしまう
new function fuga(){
function f(i){g(i);g(i);}
function g(i){++i;pn(i);}
var i=0;f(i);
}
new function hoge(){
function f(){g();g();}
function g(){++i;pn(i);}
var i=0;f(i);
}
hogeみたいにすると、グローバル変数が増えてしまう
new function fuga(){
function f(i){g(i);g(i);}
function g(i){++i;pn(i);}
var i=0;f(i);
}
new function hoge(){
function f(){g();g();}
function g(){++i;pn(i);}
var i=0;f(i);
}
訂正:pnはalertとかに置き換えてください
「参照渡し」という用語の使い方が間違っている。
オブジェクトは「共有渡し」だから、とか言うべきかも。
オブジェクトは「共有渡し」だから、とか言うべきかも。
>>887
そんな造語で言われるとかえって通じない
そんな造語で言われるとかえって通じない
あんたが無知なだけでしょ。
http://en.wikipedia.org/wiki/Evaluation_strategy
http://en.wikipedia.org/wiki/Evaluation_strategy
885じゃないけど
復帰渡し(Call-by-Copy-Result)とは、参照渡しの特殊ケースであり
とあるから間違ってないんじゃない?そしてなぜen
復帰渡し(Call-by-Copy-Result)とは、参照渡しの特殊ケースであり
とあるから間違ってないんじゃない?そしてなぜen
コピーリストアと参照渡しも別のもの。どちらもFORTRANの実装に
よく使われていた。基本的にパラメタをサブルーチン側から書き換えて
結果を返せるようにしたもの。オブジェクトを渡して共有させる >>885
とは別のもの。ま、そういう試験に出るような知識なんかどうでもいい
と言われるならその通りなんだけどね。ちなみに情報科学ものの項目は
日本語Wikipediaはあんまり信用できないと思っている。
よく使われていた。基本的にパラメタをサブルーチン側から書き換えて
結果を返せるようにしたもの。オブジェクトを渡して共有させる >>885
とは別のもの。ま、そういう試験に出るような知識なんかどうでもいい
と言われるならその通りなんだけどね。ちなみに情報科学ものの項目は
日本語Wikipediaはあんまり信用できないと思っている。
凄くどうでも良いと思うが・・・
意味合いで通じない分けじゃあるまい・・・
それに信用出来ないなら信用出来るように書き換えればいい話
意味合いで通じない分けじゃあるまい・・・
それに信用出来ないなら信用出来るように書き換えればいい話
「参照渡し」という用語の間違った理解が広まるのは嫌。
日本語Wikipediaを片端から編集して回れと?まっぴらだね。
日本語Wikipediaを片端から編集して回れと?まっぴらだね。
意味の違う言葉を「意味合いで通じる」でいっしょくたにしてしまう方が分かりづらいと思うけどな。
個人的にはJSやJavaの引数は「参照のコピー渡し、みたいなもの」とか言ってたんで、
call-by-sharingという用語があることを知ってすごく納得した。
個人的にはJSやJavaの引数は「参照のコピー渡し、みたいなもの」とか言ってたんで、
call-by-sharingという用語があることを知ってすごく納得した。
> オブジェクト(すなわち 非プリミティブ値、例えば配列やユーザ定義オブジェクトなど)をパラメータとして渡すと、そのオブジェクトへの参照が関数に渡されます。
> つまり、その関数がそのオブジェクトのプロパティを変更した場合、その変更はその関数外でも有効です。
http://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Functions
> If you pass an object (i.e. a non-primitive value, such as Array or a user-defined object) as a parameter, a reference to the object is passed to the function.
> This means that if the function changes the object's properties, that change is visible outside the function,
http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions
参照でも間違ってないでしょう
> つまり、その関数がそのオブジェクトのプロパティを変更した場合、その変更はその関数外でも有効です。
http://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Functions
> If you pass an object (i.e. a non-primitive value, such as Array or a user-defined object) as a parameter, a reference to the object is passed to the function.
> This means that if the function changes the object's properties, that change is visible outside the function,
http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions
参照でも間違ってないでしょう
call-by-referenceってこういうのでしょ。関数側でも引数の指しているアドレスが同じ
perl
sub f{printf("%p\n",$_[1]);} sub g{} printf("%p\n",g);f(g);
C++
void f(int&a){a=10;printf("%p",&a);}int main(){int a=1;f(a);printf("%p",&a);}
javaやjavascriptはそうじゃない
引数は「同じアドレスを指すオブジェクト」のコピーであって元のオブジェクトとは異なるんで
そのオブジェクトを指す先は変更出来るが、そのオブジェクト自体は変更出来ない
var a ={i:1}
function f(o){o={i:2};} //不可。参照渡しなら可
function g(o){o.i=3;} //可
でも、call-by-sharing。こんな語初めて知ったわ。
the term "call by sharing" is not in common useって書いてるし
自覚有るみたいよ
perl
sub f{printf("%p\n",$_[1]);} sub g{} printf("%p\n",g);f(g);
C++
void f(int&a){a=10;printf("%p",&a);}int main(){int a=1;f(a);printf("%p",&a);}
javaやjavascriptはそうじゃない
引数は「同じアドレスを指すオブジェクト」のコピーであって元のオブジェクトとは異なるんで
そのオブジェクトを指す先は変更出来るが、そのオブジェクト自体は変更出来ない
var a ={i:1}
function f(o){o={i:2};} //不可。参照渡しなら可
function g(o){o.i=3;} //可
でも、call-by-sharing。こんな語初めて知ったわ。
the term "call by sharing" is not in common useって書いてるし
自覚有るみたいよ
■参照渡しはあるよ派
function hoge(p) { p.name = "buchi"; }
var q = {};
hoge(q);
alert(q.name); "buchi"
関数はちゃんと渡したオブジェクトに対してアクセスできているので参照渡しと呼んで良い。
プリミティブでは純粋な値渡しになるので、違いを明確にするためにも
「参照」と呼んで誤解を招かないようにすべき。
■参照渡しはないよ派
function hoge(p) { p = "cat"; }
var q = "dog";
hoge(q);
alert(q); // "dog"
ってやったとき、 "cat" と表示されるのが引数が参照渡し。
JavaScriptでもJavaにもこの参照渡しという仕組み自体が存在しない。
参照渡しが欲しければC/C++やVBAやれ。
function hoge(p) { p.name = "buchi"; }
var q = {};
hoge(q);
alert(q.name); "buchi"
関数はちゃんと渡したオブジェクトに対してアクセスできているので参照渡しと呼んで良い。
プリミティブでは純粋な値渡しになるので、違いを明確にするためにも
「参照」と呼んで誤解を招かないようにすべき。
■参照渡しはないよ派
function hoge(p) { p = "cat"; }
var q = "dog";
hoge(q);
alert(q); // "dog"
ってやったとき、 "cat" と表示されるのが引数が参照渡し。
JavaScriptでもJavaにもこの参照渡しという仕組み自体が存在しない。
参照渡しが欲しければC/C++やVBAやれ。
http://akira.wamp.jp/study/markup/ecma-262-beginning.html
共有渡しなんて使わない、参照で合ってる。ECMAScriptの仕様でも参照型になってるよ。
共有渡しなんて使わない、参照で合ってる。ECMAScriptの仕様でも参照型になってるよ。
いやいや、俺の暇つぶし
>>897 ポインタを介してそれが実現出来るだけで、C言語には参照渡しはない。
>>898 よくある勘違いで、参照型と参照渡しは直接関係ない。参照型を値渡しすることだってある
適当にググったらけど例えばこれ
http://msdn.microsoft.com/ja-jp/library/eek064h4.aspx
仕様書の8.7 参照型にはこんなことが書いてある
a value of type Reference is used only as an intermediate result of expression evaluation and
cannot be stored as the value of a variable or property
変数とかプロパティには参照は格納されない
(略)This possibility is admitted purely for the sake of host objects
No builtin ECMAScript function defined by this specification returns a reference and there is no provision for a
user-defined function to return a reference
ただ、独自実装のために、参照を返すことは許されてる。
でも実際の所、そんな実装はない
>>897 ポインタを介してそれが実現出来るだけで、C言語には参照渡しはない。
>>898 よくある勘違いで、参照型と参照渡しは直接関係ない。参照型を値渡しすることだってある
適当にググったらけど例えばこれ
http://msdn.microsoft.com/ja-jp/library/eek064h4.aspx
仕様書の8.7 参照型にはこんなことが書いてある
a value of type Reference is used only as an intermediate result of expression evaluation and
cannot be stored as the value of a variable or property
変数とかプロパティには参照は格納されない
(略)This possibility is admitted purely for the sake of host objects
No builtin ECMAScript function defined by this specification returns a reference and there is no provision for a
user-defined function to return a reference
ただ、独自実装のために、参照を返すことは許されてる。
でも実際の所、そんな実装はない



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.75 + (1001) - [97%] - 2010/1/23 1:07 ○
- + JavaScript の質問用スレッド vol.76 + (1001) - [97%] - 2010/3/10 4:02
- + JavaScript の質問用スレッド vol.77 + (1001) - [97%] - 2010/5/8 19:06
- + JavaScript の質問用スレッド vol.78 + (1001) - [97%] - 2010/6/25 3:53
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.129 + (981) - [95%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.119 + (1002) - [95%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.139 + (1001) - [95%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.109 + (1001) - [95%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.129 + (926) - [95%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.93 + (1001) - [95%] - 2011/12/10 18:31
- + JavaScript の質問用スレッド vol.98 + (1001) - [95%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.97 + (1001) - [95%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.95 + (1001) - [95%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.94 + (1001) - [95%] - 2012/1/8 15:46
トップメニューへ / →のくす牧場書庫について