のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,440,361人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

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

    元スレ+ JavaScript の質問用スレッド vol.79 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : Name_Not - 2010/08/29(日) 18:05:36 ID:??? (+57,+29,-19)
    幅の差のまとめって言ったって、文字・フォントごとに全部違うわけで。
    これとかを参考に自分でコード書いてテーブルを作るのが早そう。
    もはやJSとは全く関係ないけど。
    http://dobon.net/vb/dotnet/graphics/measurestring.html
    852 : Name_Not - 2010/08/29(日) 18:27:00 ID:??? (-3,-30,-186)
    >>847,849
    どうもありがとうございます。
    1.はDOMの仕様書に答えがありました(1.1.4)
    nodeValueはDOMStringで、DOMStringは添え字が16ビット
    今PCに入ってるのだと
    Chrome5は仕様通り、Firefox2.0だと4096文字、IE6は切り詰められない
    innerHTMLは仕様書にはないんですね

    >>849
    今回は単体なので、前半のやつ、使わせて貰います。
    パフォーマンスの話は、追加する要素数が複数個の場合ですよね
    853 : Name_Not - 2010/08/29(日) 21:00:04 ID:??? (-1,-29,-32)
    innerHTMLはMS独自だからMSHTMLの仕様書にありそう(あるの?)
    854 : Name_Not - 2010/08/30(月) 11:10:02 ID:??? (+3,-29,-89)
    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
    855 : Name_Not - 2010/08/31(火) 14:13:47 ID:??? (-9,-29,-28)
    >>846 2.に追記
    ECMAScriptの仕様では、左辺値を返す関数は定義してもいいことになってるが
    実際の所そういう組み込み関数は存在しない
    857 : Name_Not - 2010/09/01(水) 14:07:42 ID:??? (-2,-30,-36)
    CSSでdisplay:noneとかvisible:hiddenとかする
    858 : Name_Not - 2010/09/01(水) 15:35:49 ID:??? (-1,-29,-39)
    mouseleave、mouseenterが子要素に反応してしまう時があるがあれはなんだろう・・・
    調べても有益な情報がない・・
    859 : Name_Not - 2010/09/01(水) 20:55:33 ID:??? (+15,+20,-22)
    jQueryなら10msごとにキューから命令を取り出すからタイムラグがある
    861 : Name_Not - 2010/09/02(木) 03:50:03 ID:dSaWZ26a (-25,+29,-9)
    被リンクサービスはこれらの業者を掛け持ちするのがベスト!
    http://hibari.2ch.net/test/read.cgi/hp/1251444817/964
    862 : Name_Not - 2010/09/02(木) 12:00:31 ID:??? (-27,-30,-101)
    thisは書き換え不可みたいなのですが
    コメント部分で、aの中身を"fuga"にかきかえるようなことは出来ますか

    a="hoge";
    String.prototype.fuga=function(){ /* */ }
    a.fuga();
    alert(a);
    865 : Name_Not - 2010/09/02(木) 18:52:14 ID:??? (+32,-29,-2)
    call/applyは関係ないような
    862は無理でしょ
    866 : Name_Not - 2010/09/02(木) 19:09:19 ID:??? (-1,-29,-16)
    a=a.fuga()にしていいなら可能だけどそれだと意味なさそうだしなw
    867 : Name_Not - 2010/09/02(木) 19:28:09 ID:fCrl5Kaf (+31,-30,-42)
    できないって言ってる人は初心者?
    document.getElementsByTagName("script")[n].innerText
    のmatch、sliceでできるじゃん
    868 : Name_Not - 2010/09/02(木) 20:35:41 ID:??? (+88,+29,-5)
    >>867 を最高に罵ってやろうと思ったけどアホらしくて全文消した
    869 : Name_Not - 2010/09/02(木) 20:46:34 ID:??? (+31,-30,-43)
    String.prototype.fuga=function(){ a="fuga" }
    870 : Name_Not - 2010/09/02(木) 21:20:17 ID:??? (+74,+30,-111)
    >868
    いやいやJavaScriptみたいなネイティブから距離がある言語は、
    思いきったことをしないといけない時があるんだよ
    一見マヌケなようでも「できない」より「できる」方がいいでしょ?
    ある意味視野を広げたいいコードだと思うよ
    JavaScriptの特徴を活かしてるじゃん

    まあお前さんはこんなんよりよっぽどいいコードを書けるんだろうから
    文句言いたい気持ちはわかるよ
    871 : Name_Not - 2010/09/02(木) 21:29:15 ID:??? (+70,+29,-12)
    質問者です
    >>867の発想には笑いました
    >>869質問の仕方が悪かったですごめんなさい
    >>865の言うように、どうやら無理そうですね
    873 : 871 - 2010/09/02(木) 22:32:12 ID:??? (+3,-30,-104)
    なるほど。そういう方向だと、valueOfも書き換えた方が良いのかな
    しかし、コンテキスト変換が行われないような場合
    var pln= function(s){document.getElementById('stdout').innerHTML+=s+'<br/>';}
    var a = new String('hoge');
    pln(a);
    a.fuga();
    pln(a);
    こうすると、hogeのままです

    元々の質問の目的は、それが実現出来るか、よりも
    どういうコーディングするのが良いかなってのの探索だったので
    普通のやり方では無理そうってのがわかったので一応、満足です
    みなさんありがとうございました。
    874 : Name_Not - 2010/09/02(木) 22:54:53 ID:??? (+52,+29,-15)
    いや出来てないしw
    一休さんかよw
    875 : Name_Not - 2010/09/02(木) 22:55:50 ID:??? (-6,-30,-123)
    >>872
    それやってみたけどこっちで変わってなかった理由が今わかった。
    alertじゃなくてchromeのconsole.log使ってたわ。

    ベストなのはa.fuga();の関数内でthisの名前="a"が判ればevalでも何でも使って完全に書き換えられるよね。
    普通の関数ならブラウザを選ぶけどできるのになぁ。(function a(){return arguments.callee.name})()
    876 : Name_Not - 2010/09/03(金) 07:15:12 ID:??? (+67,+29,-27)
    俺だったら普通にindexOfとかで>867みたいにやるけどな
    それしかやる方法がないのならそれが普通だろ
    だったら変に考えず使えばいいのに
    877 : Name_Not - 2010/09/03(金) 09:01:00 ID:VuAS0xwH (-25,+29,-9)
    被リンクサービスはこれらの業者を掛け持ちするのがベスト!
    http://hibari.2ch.net/test/read.cgi/affiliate/1261126390/565
    878 : Name_Not - 2010/09/03(金) 09:06:20 ID:??? (+52,+29,-1)
    猫リンクに見えた。疲れてんのかな。
    879 : Name_Not - 2010/09/03(金) 10:34:08 ID:??? (+44,-30,-27)
    >>876
    それだとa.fuga()で実行する必要性がないじゃん?
    change()とかでもいいんだし。あと、変数aっていう部分の特定が出来ない。
    change("a")とかするなら、>>867である必要はなくできる。
    880 : Name_Not - 2010/09/03(金) 10:58:08 ID:??? (+3,-30,-159)
             し!     _  -── ‐-   、  , -─-、 -‐─_ノ
      活 噴    // ̄> ´  ̄    ̄  `ヽ  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    !    /  フ      /     -‐ / ̄/〉 〈 \ /!
    881 : Name_Not - 2010/09/03(金) 10:58:49 ID:??? (+37,+14,+1)
    すみません、誤爆しましたorz
    882 : Name_Not - 2010/09/03(金) 11:18:27 ID:??? (+63,+29,-29)
    >879
    その辺は他が具体的にだいたいどうなってるかが分かっとけばいくらでもなんともできる
    ライブラリーとかじゃなくてその場の道具として使うのならなんとかなる
    883 : Name_Not - 2010/09/04(土) 10:08:13 ID:??? (+13,-30,-105)
    仮引数の変更を実引数の変更に反映させる方法ってありますか?
    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);
    }
    884 : 883 - 2010/09/04(土) 10:09:23 ID:??? (-1,-29,-4)
    訂正:pnはalertとかに置き換えてください
    885 : Name_Not - 2010/09/04(土) 10:18:46 ID:??? (+34,-29,-8)
    Objectは参照渡しだからObjectで渡したらいいよ
    886 : Name_Not - 2010/09/04(土) 10:29:55 ID:??? (+23,-4,+0)
    できました、ありがとうございました!
    887 : Name_Not - 2010/09/04(土) 12:37:16 ID:??? (+91,+29,-32)
    「参照渡し」という用語の使い方が間違っている。
    オブジェクトは「共有渡し」だから、とか言うべきかも。
    888 : Name_Not - 2010/09/04(土) 12:41:14 ID:??? (+70,+29,-4)
    >>887
    そんな造語で言われるとかえって通じない
    889 : Name_Not - 2010/09/04(土) 12:51:45 ID:??? (+52,+29,+0)
    あんたが無知なだけでしょ。
    http://en.wikipedia.org/wiki/Evaluation_strategy
    890 : Name_Not - 2010/09/04(土) 13:02:50 ID:??? (-1,-29,-36)
    885じゃないけど
    復帰渡し(Call-by-Copy-Result)とは、参照渡しの特殊ケースであり
    とあるから間違ってないんじゃない?そしてなぜen
    891 : Name_Not - 2010/09/04(土) 13:07:46 ID:??? (+65,+29,-126)
    コピーリストアと参照渡しも別のもの。どちらもFORTRANの実装に
    よく使われていた。基本的にパラメタをサブルーチン側から書き換えて
    結果を返せるようにしたもの。オブジェクトを渡して共有させる >>885
    とは別のもの。ま、そういう試験に出るような知識なんかどうでもいい
    と言われるならその通りなんだけどね。ちなみに情報科学ものの項目は
    日本語Wikipediaはあんまり信用できないと思っている。
    892 : Name_Not - 2010/09/04(土) 13:10:37 ID:??? (+57,+29,-36)
    凄くどうでも良いと思うが・・・
    意味合いで通じない分けじゃあるまい・・・
    それに信用出来ないなら信用出来るように書き換えればいい話
    893 : Name_Not - 2010/09/04(土) 13:18:09 ID:??? (+57,+29,-65)
    「参照渡し」という用語の間違った理解が広まるのは嫌。
    日本語Wikipediaを片端から編集して回れと?まっぴらだね。
    894 : Name_Not - 2010/09/04(土) 13:20:13 ID:??? (+62,+29,-62)
    意味の違う言葉を「意味合いで通じる」でいっしょくたにしてしまう方が分かりづらいと思うけどな。
    個人的にはJSやJavaの引数は「参照のコピー渡し、みたいなもの」とか言ってたんで、
    call-by-sharingという用語があることを知ってすごく納得した。
    895 : Name_Not - 2010/09/04(土) 13:26:32 ID:??? (+3,-30,-255)
    > オブジェクト(すなわち 非プリミティブ値、例えば配列やユーザ定義オブジェクトなど)をパラメータとして渡すと、そのオブジェクトへの参照が関数に渡されます。
    > つまり、その関数がそのオブジェクトのプロパティを変更した場合、その変更はその関数外でも有効です。
    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

    参照でも間違ってないでしょう
    896 : Name_Not - 2010/09/04(土) 13:50:04 ID:??? (+3,-30,-248)
    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って書いてるし
    自覚有るみたいよ
    897 : Name_Not - 2010/09/04(土) 13:57:03 ID:??? (+9,-30,-147)
    ■参照渡しはあるよ派
    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やれ。
    898 : Name_Not - 2010/09/04(土) 14:32:33 ID:??? (+4,-29,-11)
    http://akira.wamp.jp/study/markup/ecma-262-beginning.html
    共有渡しなんて使わない、参照で合ってる。ECMAScriptの仕様でも参照型になってるよ。
    899 : Name_Not - 2010/09/04(土) 15:17:14 ID:??? (+52,+29,+0)
    はい、これでおしまい
    900 : Name_Not - 2010/09/04(土) 15:28:43 ID:??? (+4,-30,-308)
    いやいや、俺の暇つぶし

    >>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
    ただ、独自実装のために、参照を返すことは許されてる。

    でも実際の所、そんな実装はない
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について