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

    私的良スレ書庫

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

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

    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
    551 : Name_Not - 2014/09/23(火) 14:06:52.22 ID:???.net (+4,-30,-143)
    >>548の訂正
    (function(){
    function Person(){
    console.log(this); ・・・ (1)
    }
    var a = new Person();
    var b = Person();
    console.log(a); ・・・(2)
    console.log(b); ・・・(3)
    }())

    出力結果

    Person {} ・・・ (1) new Person()
    Window  ・・・ (2)
    Person {} ・・・ (1) Person()
    undefined ・・・ (3)
    552 : Name_Not - 2014/09/23(火) 14:12:26.05 ID:???.net (+4,-29,-47)
    newの付け忘れとかでこうなった場合、
    >obj.foo(1, 2, 3) という呼び出し方をすれば、 . の左側が第0引数になる。
    だけの解説だとわかりにくいんじゃないかなと思ったんだよね
    553 : Name_Not - 2014/09/23(火) 14:14:14.90 ID:???.net (+5,-30,-138)
    >>548の再訂正

    (function(){
    function Person(){
    console.log(this); ・・・ (1)
    }
    var a = new Person();
    var b = Person();
    console.log(a); ・・・(2)
    console.log(b); ・・・(3)
    }())

    出力結果

    Person {} ・・・(1) new Person()
    Window  ・・・(1) Persion()
    Person {} ・・・(2) aの中身
    undefined ・・・(3) bの中身
    554 : Name_Not - 2014/09/23(火) 14:22:54.18 ID:???.net (+3,-30,-115)
    >>552
    その他の説明のほうが、ルールが複雑だと思うけど?

    [ここ] foo(1, 2, 3)

    foo([ここ], 1, 2, 3)

    こう解釈されるってだけ。
    obj.foo(1,2,3) → foo(obj, 1, 2, 3)
    new foo(1,2,3) → foo(新規作成, 1, 2, 3)
    foo(1,2,3) → foo(なし, 1, 2, 3)

    この基本系+第0引数を自由に設定できるcallとapplyが存在する。

    実はPerlも似たような解釈をする。
    この見えない第0引数のthisっていうのは、昔のTurboC++3.0のマニュアルに
    C++の動きの解説としてのってたんだよな。
    それしってるからJavaScriptもPerlも内部的には同じように処理してるんだって思ってる。
    555 : Name_Not - 2014/09/23(火) 14:28:56.00 ID:???.net (+3,-30,-104)
    多分初心者はこのthisはなんなんだー?って思うだろうけどさ、

    function foo() {
      function bar() {
        function baz() {
          console.log(this); ←このthis
        }
      }
    }

    第0引数を補完してやって、こうすれば

    function foo(this) {
      function bar(this) {
        function baz(this) {
          console.log(this); ←このthis
        }
      }
    }

    thisはbazの第0引数として渡されたもの、
    つまりbazの呼び出し方で決まるってわかるでしょ?
    556 : Name_Not - 2014/09/23(火) 14:46:02.15 ID:???.net (+3,-30,+0)
    addEventListenerとかjQueryのonとかで

    var a = 1; ・・・(1)
    console.log(this); ・・・(2)
    $(element).on('click', function() {
      console.log(a); // (1)と同じ
      console.log(this); // (2)とは違う。
    })

    thisどうなってるんだ!?っていうのも

    var a = 1; ・・・(1)
    console.log(this); ・・・(2)
    $(element).on('click', function(this, a) {
      console.log(a); // (1)とは違う。
      console.log(this); // (2)とは違う。
    })

    こう考えればいい。ついでに無名関数の引数にaを追加したが
    こうした場合、引数のaで(1)が隠される。これはだれでも理解してると思うが、
    このaと同じことが、thisに関しては常に成立している。なぜなら見えない第0引数が存在するから。

    で、thisとaが実際に無名関数内でどうなるかは、呼び出す側の仕様で何を渡すかで決まる。
    557 : Name_Not - 2014/09/23(火) 15:00:37.38 ID:???.net (+58,+29,-39)
    確かにthisだけだと「見えない第0引数」という解説のほうが簡潔でわかりやすいね
    この原則を認識してると>>541はちょっと筋が悪い解説にみえる
    558 : Name_Not - 2014/09/23(火) 15:07:35.06 ID:???.net (-6,-29,-2)
    qiitaに記事うpして
    559 : Name_Not - 2014/09/23(火) 15:25:36.26 ID:???.net (+57,+29,-10)
    種類が問題なわけじゃないからな
    任意に設定される、というところが一番重要
    560 : Name_Not - 2014/09/23(火) 16:14:49.99 ID:???.net (+3,-30,-50)
    (function(){
    function f(a, b){
    return b[0] > b[1];
    }
    var s = f(function(x) { return (a, b); }, [0, 5]);
    console.log(s)
    }())

    これってクロージャになってますか?
    561 : Name_Not - 2014/09/23(火) 17:01:41.34 ID:???.net (+78,+29,-5)
    なにこにバカの集まり
    562 : Name_Not - 2014/09/23(火) 17:08:16.04 ID:cBVzidGk.net (+35,+29,-35)
    >>535
    全く似てないよー

    そんで他言語の覚えがあるなら
    オライリーのサイ本が良いと思うよ

    サイトはこれってものはアレだけど
    prototypeについてを調べると良いと思う
    563 : Name_Not - 2014/09/23(火) 17:12:20.28 ID:???.net (+15,-12,-30)
    サイボンってネットで無料で見れますか?
    564 : Name_Not - 2014/09/23(火) 18:00:06.30 ID:???.net (+55,+21,+0)
    >>561
    悔しいのうww
    565 : Name_Not - 2014/09/23(火) 20:11:47.38 ID:???.net (+44,+28,+0)
    こにバカ
    567 : Name_Not - 2014/09/24(水) 01:54:48.58 ID:BO8UvMSB.net (+24,+29,-6)
    thisは恣意的に設定されてるだけって言ってるじゃん
    そう決められてるからそうなるだけのこと
    568 : Name_Not - 2014/09/24(水) 02:00:45.00 ID:???.net (+21,+3,-2)
    バグだ
    569 : Name_Not - 2014/09/24(水) 02:35:31.17 ID:???.net (+3,-30,-186)
    まあでも strictモードのundefinedにするってのが理にかなってはいるね
    ここ.aaaa(); のここの部分が無いわけだから

    ググればわかるけど、非strictモードではthisがnullやundefinedだったばあい
    グローバルオブジェクトに変換しているとのこと
    (>>566で aaaaa.call(null); ってするとwindowが表示される)
    570 : Name_Not - 2014/09/24(水) 09:25:07.69 ID:???.net (+57,+29,-41)
    思い込みでおかしい宣言する人は仕様書を一から熟読するべき
    決まってるものをおかしいいわれても、おまえがおかしいとしか言いようがない
    571 : Name_Not - 2014/09/24(水) 09:27:31.52 ID:???.net (+34,-30,-115)
    1)Number.isNaN(100) // false
    2)Number.isNaN("abc") // false
    3)isNaN(100) // false
    4)isNaN("abc") // true

    なんで2番めのがfalseになるんですか?
    572 : Name_Not - 2014/09/24(水) 09:48:08.23 ID:???.net (+56,+24,-3)
    >>571
    NaNではないから
    むしろ、なぜ true になると思った?
    573 : Name_Not - 2014/09/24(水) 10:03:10.65 ID:???.net (+4,-29,-20)
    文字列なのにNaNになると思いました
    4がtrueなのに何故2はfalseになるのかよくわかりません
    574 : Name_Not - 2014/09/24(水) 10:13:08.71 ID:???.net (+37,-30,-117)
    >>573
    Number.isNaN と isNaN が同じ機能を提供していると認識違いしてるんだろ
    思い込みで決め付ける前に「自分が思う前提が間違っているかもれない」と捉え、自分から調べる努力をしろ

    上の this の質問もそうだが、自分の考えが正しいと信じ込んでる分、いくら仕様だと説明しても理解することもしない、大変性質が悪い
    自分で調べた上で「~では~と書かれており、自分は~と認識してるんですが、合ってますか?」と質問するぐらいでちょうどいい

    Number.isNaN()
    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
    http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan
    isNaN()
    http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
    http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number
    575 : Name_Not - 2014/09/24(水) 12:54:37.12 ID:???.net (+57,+29,-21)
    おれ、ここで先輩方にぼこられてからスキルが上がった気がします!
    576 : Name_Not - 2014/09/24(水) 13:34:33.47 ID:???.net (+97,+29,-5)
    >>574
    分かっている人に聞いたほうが早いと思って・・・
    実際そうでしたしw
    ありがとうございました
    577 : Name_Not - 2014/09/24(水) 13:37:59.89 ID:???.net (+90,+29,-7)
    >>576
    問題ないよ
    どんどん聞けばいい
    答えるのも答えないのも自由なんだから
    578 : Name_Not - 2014/09/24(水) 13:42:13.27 ID:???.net (+40,+5,+2)
    >>577
    どうも^^
    579 : Name_Not - 2014/09/24(水) 14:25:54.36 ID:???.net (+57,+29,-6)
    こんなところの答えを信用するかどうかも質問者次第だけど
    580 : Name_Not - 2014/09/24(水) 14:38:22.88 ID:???.net (+57,+29,-21)
    A級以上の質問者は回答の質を見分けられるので問題ないよ
    581 : Name_Not - 2014/09/24(水) 15:01:34.67 ID:???.net (+57,+29,-2)
    まあそうだな
    スルーしてるけど変な回答もあるし
    582 : Name_Not - 2014/09/24(水) 15:01:39.27 ID:???.net (-1,-29,-92)
    Chrome,Firefox,Opera,IE9以上なら配列の最後にカンマを残してもトラブルは起きないですか?
    Windows持ってないからOperaとIE試せる方おしえてkづあしあ
    583 : Name_Not - 2014/09/24(水) 15:43:09.82 ID:???.net (+47,-30,+0)
    var Class = function(){
    var klass = function(){
    this.init.apply(this, arguments);
    };
    klass.prototype.init = function(){};
    // プロトタイプにアクセスするためのショートカット
    klass.fn = klass.prototype;
    // クラスにアクセスするためのショートカット
    klass.fn.parent = klass;
    // クラスプロパティを追加します
    klass.extend = function(obj){
    var extended = obj.extended;
    for(var i in obj){
    klass[i] = obj[i];
    }
    if (extended) extended(klass);
    };
    // インスタンスプロパティを追加します
    klass.include = function(obj){
    var included = obj.included;
    for(var i in obj){
    klass.fn[i] = obj[i];
    }
    if (included) included(klass);
    };
    return klass;
    };
    584 : Name_Not - 2014/09/24(水) 15:43:35.99 ID:???.net (+31,-29,-67)
    ステートレスJavaScriptにこのようなコードがあります
    extendはクラス拡張、includeはプロトタイプ拡張です
    しかしプロトタイプ拡張=includeがピンと来ません
    どっちもextendだと区別できないので別の言葉にしてるだけなら、
    extendPorototypeとかにした方がいいんじゃないかと思うのですが、どうなんですか?
    585 : Name_Not - 2014/09/24(水) 15:52:31.38 ID:???.net (-1,-29,-18)
    複数条件(100件ほど)での文字列全文置換がしたいです。
    文字列置換自体はreplaceで良いようなのですが、条件の指定はどうするのが良いでしょうか。
    586 : Name_Not - 2014/09/24(水) 15:54:37.30 ID:???.net (+84,+27,+0)
    それjsでやる意味がわからない
    587 : Name_Not - 2014/09/24(水) 15:55:29.17 ID:???.net (+95,+29,-13)
    >>586
    分からないなら黙っとけや
    588 : Name_Not - 2014/09/24(水) 16:06:36.14 ID:???.net (+117,+16,+3)
    589 : Name_Not - 2014/09/24(水) 16:16:47.17 ID:???.net (+69,+29,-16)
    >>588
    それが正しいとして、だから何なんだ?
    意味のないことを言って反論にしたつもりにでもなってるのか?
    590 : Name_Not - 2014/09/24(水) 16:18:13.72 ID:???.net (+12,-22,-23)
    >>583の件ですが、
    extended、includedというコールバックを指定していますが
    これだとコールバックまでextendやincludeされますね
    コールバックが追加される必要はないので、別引数で渡した方がいいですよね・・
    それとも何かメリットあるんでしょうか?
    591 : Name_Not - 2014/09/24(水) 16:19:32.12 ID:???.net (+73,+29,-8)
    >>588
    こいつ何言ってんだと思ったら透視してみたのか
    それがなんなんだよ
    隠してねーよバーカ
    592 : Name_Not - 2014/09/24(水) 16:36:08.40 ID:???.net (+9,-8,-2)
    図星w
    593 : Name_Not - 2014/09/24(水) 16:39:27.37 ID:???.net (+89,+29,-2)
    当てられてムキになるくらいなら、隠せばいいと思います
    594 : Name_Not - 2014/09/24(水) 16:39:54.86 ID:???.net (+55,+29,-38)
    レス番透視は自分で馬鹿でーすって言ってるようなものだからやめた方がいいぞ
    C級以下の知性の持ち主がやること
    595 : Name_Not - 2014/09/24(水) 16:42:10.42 ID:???.net (+98,+29,-34)
    >>593
    アスペ乙
    無意味なレスをドヤ顔で書ける頭の悪さにイラッとしたわけ
    596 : Name_Not - 2014/09/24(水) 17:10:44.23 ID:???.net (+6,-30,+0)
    >>335の件ですが、
    ステートフルJavaScriptに

    あるオブジェクトのプロパティを取得しようとすると、
    まずそのオブジェクトがローカルに保持しているプロパティが検索されます。
    該当するプロパティが存在しない場合は、
    そのオブジェクトのプロトタイプオブジェクトが保持しているプロパティが検索され、
    そこでも存在しない場合はプロトタイプオブジェクトのプロトタイプオブジェクトが検索されます。

    とありました。
    つまり__proto__はプロトタイプオブジェクトと言えそうです。
    obj.prototypeすなわちプロトタイププロパティ、≠プロトタイプオブジェクト
    なところが、
    JavaScriptにおける継承の理解を困難にしている大きな原因ではないでしょうか
    597 : Name_Not - 2014/09/24(水) 17:13:52.18 ID:???.net (+66,-29,-17)
    >>584は"ステートレス"JavaScriptを目指してるんだろうから、extendeもincludeも理解しなくていいよ
    598 : Name_Not - 2014/09/24(水) 17:16:07.56 ID:???.net (-2,-30,-92)
    __proto__・・そのオブジェクトのプロトタイプオブジェクト
    protytpe・・その関数オブジェクトのインスタンスのプロトタイプオブジェクト

    かな
    599 : Name_Not - 2014/09/24(水) 17:17:00.01 ID:???.net (+49,+22,+2)
    >>597
    意味不明
    600 : Name_Not - 2014/09/24(水) 17:17:47.54 ID:???.net (+71,+29,-21)
    >>595
    相手はお前をイラっとさせようと思ってるんだろうから、そんな沸点が低いと思う壺だろw
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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