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

    私的良スレ書庫

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

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

    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
    751 : Name_Not - 2016/02/23(火) 19:53:07.48 ID:???.net (+102,+29,-12)
    >>748
    偉いプログラマはどうなるんですか
    752 : Name_Not - 2016/02/23(火) 19:53:15.07 ID:???.net (+70,+29,-1)
    >>748
    君に同意する
    753 : Name_Not - 2016/02/23(火) 20:01:36.17 ID:???.net (+99,+29,+0)
    >>751
    ここには来ない
    754 : Name_Not - 2016/02/23(火) 20:02:00.98 ID:???.net (+78,+30,-68)
    もうそれこそ>>750が適当に書いた可能性だって合ったわけだし、
    なんだって合ったわけでそんなんに一々付き合ってはいられない。

    自分は自分なりに質問を判断して回答し、
    一々他の回答にイチャモン付けないというのが最も正しい。
    良くない回答だと思うのであればより良い回答を示せばいいだけのこと。
    何故それが出来ない。
    755 : 713 - 2016/02/23(火) 20:05:03.09 ID:NZFjOJ2+.net (+7,+30,-33)
    >>750
    あくまで個人の見解として聞いて欲しいのだが、
    「未検証だけど、こんなコードでどう?」ぐらいは伝えても良かったのでは、と思う
    何も検証してなくて>>650の受け答えは開き直られたようで正直、いい気持ちはしなかった
    756 : Name_Not - 2016/02/23(火) 20:07:22.75 ID:???.net (+74,-29,-17)
    appendFunctionなのに実際はfunctionだけじゃないというのがイケてないな
    クロージャー渡してるから確かにfunctionは渡してるけど
    757 : Name_Not - 2016/02/23(火) 20:08:27.52 ID:???.net (+78,+28,-3)
    >>753
    では>>748は普通のプログラマの評価ですか?
    758 : Name_Not - 2016/02/23(火) 20:09:19.93 ID:???.net (+62,+29,-10)
    >>756
    そこじゃない
    型チェックが無いコードはjavascriptではよくある事
    引数渡してないのが一番問題
    759 : Name_Not - 2016/02/23(火) 20:09:22.83 ID:???.net (+57,+29,-3)
    うーん、もっと根本的な部分がおかしいと思う
    760 : Name_Not - 2016/02/23(火) 20:12:29.36 ID:???.net (+62,+26,-4)
    >>756
    「実際はfunctionだけじゃない」とは?
    761 : Name_Not - 2016/02/23(火) 20:12:42.07 ID:???.net (+67,+30,-41)
    >>746
    なんか被害者ぶりだしたようだけど最初に自分が偉そうに批評したことから全て始まったんだろ。
    本当にすまないと思ってるなら言い訳抜きで謝ってはよこの流れを精算しろ。
    762 : Name_Not - 2016/02/23(火) 20:14:57.19 ID:???.net (+57,+29,+0)
    まあせめてこれぐらいは
    http://jsfiddle.net/rrgxofby/
    763 : Name_Not - 2016/02/23(火) 20:19:11.68 ID:???.net (+80,+28,+0)
    変わってねー
    764 : Name_Not - 2016/02/23(火) 20:20:54.81 ID:???.net (+57,+29,-24)
    些細な行き違いで鬼の首取ったように騒ぎ立てることもない……
    765 : Name_Not - 2016/02/23(火) 20:25:34.35 ID:???.net (+19,-18,-15)
    >>756
    何もしなくてもTypeErrorになるので型チェックは不要かと
    766 : Name_Not - 2016/02/23(火) 20:28:57.41 ID:???.net (+125,+29,-21)
    決め付けは良くない
    決めつけると可能性厨が突っ込みにやってくるぞ
    767 : Name_Not - 2016/02/23(火) 20:30:17.43 ID:???.net (+68,+28,-4)
    >>766
    誰に言ってる?検証してる?
    768 : Name_Not - 2016/02/23(火) 20:30:30.66 ID:???.net (+3,-30,-71)
     発 禿 同   彡⌒ミ            彡⌒ミ      争
     生 同 .じ   (´・ω・`)          (´・ω・`)     い
     .し 士 .レ  〃⌒` ´⌒ヽ      γ⌒´‐ - ⌒ヽ   は、
     .な で .ベ ( V~つ)人.゚ノV~つ)) 〉ン、_ `{ __ /`(  )
     .い し .ル  ヽ_/〃仝ミ/~ヽ_/ (三0_´∧ミ キ )彡ノヽ`ヽ)
     .! ! か の    /~~~~~~~ヽ、      ̄   ノ~ミ~~~~.| 0三)
              |__|\_ヽ      / ヽレ´   |   ̄
                〉 )   〉 )     /_  へ    \
              //  / /      \ ̄ィ.  \   )
             (__)  (__)       i__ノ    |, ̄/
                                    ヽ二)
    769 : Name_Not - 2016/02/23(火) 20:35:03.35 ID:???.net (+15,-30,-164)
    あ、わかった
    var hoge = function(){
    if ( typeof hoge.i === 'undefined' ) {
    hoge.i = 0;
    }
    console.log(hoge.i);
    ++hoge.i;
    }
    なんてことやってると、>>718の例だと
    hoge(); hoge(); // 0, 1 を出力
    hoge = appendFunction( hoge, function() { console.log('hage') } );
    hoge(); hoge(); // 0, 1, hage を出力
    って感じでappendのタイミングでhoge.iが初期化される

    考えてみれば当たり前っちゃ当たり前なのか?
    770 : Name_Not - 2016/02/23(火) 20:36:45.82 ID:???.net (+5,+29,-32)
    どうでもいいけど「争いは、同じレベルの者同士でしか発生しない」が正しい信じている人が結構いそう
    771 : Name_Not - 2016/02/23(火) 20:39:29.54 ID:???.net (+82,+29,-42)
    >>770
    正しいよ
    これを正しくないというのは2chの共通解釈に慣れ親しんでないか、
    皮肉が通じない糞真面目またはアスペ
    772 : Name_Not - 2016/02/23(火) 20:39:48.23 ID:???.net (+108,+29,-29)
    >>766
    決めつけというか仕様書に書いてあったと思うけど
    773 : Name_Not - 2016/02/23(火) 20:40:43.70 ID:???.net (+57,+29,-11)
    正しくは争いは起こるがレベル差がある場合は早々に決着がつく、な
    774 : Name_Not - 2016/02/23(火) 20:44:16.45 ID:???.net (+63,+29,-7)
    >>771
    http://goo.gl/LtMNyzの「よくある議論」参照
    775 : Name_Not - 2016/02/23(火) 20:46:06.29 ID:???.net (+108,+29,-4)
    >>772
    それで本当に良いと言えるのかということを言ってるんだろう
    776 : Name_Not - 2016/02/23(火) 20:48:52.55 ID:???.net (+58,+30,-33)
    争い云々は
    醜く争うのは貴方も嫌ってる相手と同じレベルになっちゃうかもよ
    だからやめようねということでしかないのに
    本当にそうなのかを考えようとする人って一体。。。
    777 : Name_Not - 2016/02/23(火) 20:49:46.06 ID:???.net (+111,+29,-71)
    >>775
    ええと…、どういうことだろう
    TypeErrorを返すよりも他に適切な処理があるという事かな?
    それとも、使用を正しく実装していないブラウザがある可能性かな?
    (これは検証すれば誰でもわかると思うので疑うなら自分で検証してください、だけど)
    778 : Name_Not - 2016/02/23(火) 20:49:46.57 ID:???.net (+55,+29,-7)
    同じレベルって言うのは
    周りから見ると同じレベルに馬鹿ってことだろ。
    779 : Name_Not - 2016/02/23(火) 20:51:11.72 ID:???.net (+106,+29,-16)
    >>777
    前者だろう
    実際そういう議論荒れは前に何度も起きた
    だから迂闊なことを言うな(このスレは息苦しい)というジョークだろう
    780 : Name_Not - 2016/02/23(火) 20:54:41.74 ID:???.net (+72,+29,-17)
    >>779
    うーん…、コールバック関数でTypeErrorを返すのは一般的だと思うけど、それなら代替案を出して、というところかな
    唯一解のある問題でもないと思うけど
    782 : Name_Not - 2016/02/23(火) 21:24:47.12 ID:???.net (+57,+29,-38)
    結論を言うと殆どの場合にevalは使うものじゃない。
    例外は一般的ではないから例外という。
    783 : Name_Not - 2016/02/23(火) 21:27:13.44 ID:???.net (+68,+29,-3)
    >>763
    この程度を最初から出せないのが終わっとると言う意味
    784 : Name_Not - 2016/02/23(火) 21:30:07.38 ID:???.net (-1,-29,-50)
    >>781
    返される無名関数式はnew演算子で呼ばれるもの
    であるならば、thisをfn1,fn2に渡さないと共有できないだろう
    785 : Name_Not - 2016/02/23(火) 21:31:40.53 ID:???.net (+57,+29,-4)
    煽りはもうおなかいっぱいなので建設的な意見だけお願い
    787 : Name_Not - 2016/02/23(火) 21:33:32.55 ID:???.net (-1,-29,-99)
    訂正
    × ドットの左側がなければグローバルオブジェクト(this)だ
    ○ ドットの左側がなければグローバルオブジェクト(window)だ
    788 : Name_Not - 2016/02/23(火) 21:35:06.48 ID:???.net (+57,+29,-6)
    初心者からES6規格読破者まで玉石混交だね本当に
    789 : Name_Not - 2016/02/23(火) 21:36:47.29 ID:???.net (+3,-29,-190)
    >>ただし、ドットの左側がthisになるという挙動は変更することができ、
    >>callやapplyを使うことで、ドットの左側ではなく任意のオブジェクトをthisとして渡すことが出来る。

    言い方がおかしい。
    .callや.applyがメタプロパティなんかならまだ分かるがそうではない。
    「ドットの左側がthisになるという挙動」は変わっていない。
    callやapplyにドットの左側の関数がthisとして渡されるということは同じ。

    callやapplyがよろしくやってくれるというのが正解。
    790 : Name_Not - 2016/02/23(火) 21:40:30.32 ID:???.net (-6,-30,-111)
    >786
    解けないんだ
    なんでこの例をobj.hogeでやってもwindow.aには何も入らないんだ?
    callに限っては第一引数はthisとして何を使うかの指定だろ
    無名関数が持ってるthisはグローバルオブジェクトだろ
    なら本来hogeの中はobjになるからobj.aを使うべきところが
    hoge.call(window)によってwindow.aを使うようになると思った(イコール挙動変更)
    だが実際やるとそうならないでobj.aを使いつづける
    791 : Name_Not - 2016/02/23(火) 21:40:50.43 ID:???.net (+57,+29,-18)
    そんなこと言い出したら渡されるという表現も変
    thisValueをthis値に設定した関数を呼ぶという方があってるんじゃないか?
    まあ適当でいいんだよ適当で
    792 : Name_Not - 2016/02/23(火) 21:42:59.42 ID:???.net (+62,+29,-27)
    >>790
    言葉じゃ伝わってこない
    コードを書いて説明して
    793 : Name_Not - 2016/02/23(火) 21:45:23.86 ID:???.net (+41,-29,-65)
    >>790
    > 無名関数が持ってるthisはグローバルオブジェクトだろ

    無名関数はthisを持っていない。
    thisは呼び出されるときに渡されるもの
    794 : Name_Not - 2016/02/23(火) 21:46:04.67 ID:???.net (+49,+21,+0)
    なお、window.a は何のことなのかさっぱりわからん
    795 : Name_Not - 2016/02/23(火) 21:47:51.13 ID:???.net (+3,-30,-99)
    thisは関数に付く隠れ変数というだけ
    obj.funct()というコードはfunct.this(見えない)にobjをセットして呼び出す
    funct.call(obj)もまたfunct.thisにobjをセットして呼び出す

    呼び出された関数はthisで自分のthisにアクセスできる
    obj.functというfunct関数は、あたかもobjに付随した物に見えるが、
    実際はそういう仕様に従ってるだけ
    だからobj2.funct = obj1.functとして、
    obj2.functを呼ぶとthisにobj2を入れてfunctが呼ばれる
    796 : Name_Not - 2016/02/23(火) 21:49:08.39 ID:???.net (+52,-30,-182)
    function appendFunction (fn1, fn2) {
     return function () {
      fn1.call(this);
      fn2.call(this);
     };
    }
    var a = 0;
    var obj = {
      a: 10,
      hoge: function(){
        this.a++;
      }
    }
    obj.hoge();
    console.log(obj.a);
    console.log(a);
    obj.hoge = appendFunction( obj.hoge, function () { console.log(1); });
    obj.hoge();
    console.log(obj.a);
    console.log(a);

    window.aはまぎらわしかったみたいだからaに変えた
    >>793
    これで氷解した
    そりゃhoge呼ぶときobj.hoge();ってつけるから
    これでobj.が無名関数に渡って無名関数がそのままobj.をcallに渡してるのか
    797 : Name_Not - 2016/02/23(火) 21:49:15.89 ID:???.net (+89,-30,-177)
    >>790
    786の説明が上手くない気がするんだが…
    >>609はnew演算子で呼び出す事を期待していた
    new演算子で呼び出した場合、対象の関数オブジェクトのインスタンスにthis値は束縛される
    ところが、fn1(),fn2()のように呼び出してしまうとそれぞれthis値は該当関数のインスタンスに束縛されない
    だからcallやapplyでthis値を束縛するわけ
    通常の関数呼び出しならおそらくthis値は共有するまでもなく同じなので考慮する必要はないだろうが、callやapplyで呼び出したら同様の問題が発生する
    798 : Name_Not - 2016/02/23(火) 21:51:04.35 ID:???.net (-5,-28,-14)
    無名関数とthisは関係ないだろ
    799 : Name_Not - 2016/02/23(火) 21:51:30.80 ID:???.net (+3,-30,-124)
    (無名)関数定義してんのどこ>function appendFunction
    ならappendFunctionにとってのthisつまりグローバルオブジェクトか
    appendFunctionの中の(無名)関数にとってのthisつまりappendFunctionが
    (無名)関数の中で使われてるthisだろ、と勘違いしてた
    800 : Name_Not - 2016/02/23(火) 21:51:37.95 ID:???.net (+58,+29,-54)
    appendFunctionはクソで意味のない実装だから
    初心者がコレの挙動についてどうこう考え無くていい
    初心者こそ良い教材を使わないといけない
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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