のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,843人
昨日: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
    501 : Name_Not - 2014/09/21(日) 20:18:23.27 ID:???.net (+57,+29,-3)
    俺も知らんかったけどサブドメインは別になるらしい
    502 : Name_Not - 2014/09/21(日) 21:16:02.77 ID:???.net (+12,-29,-74)
    >>496
    new じゃないと this が違うから全く狙い通りに動かない

    **.prototype.init の 継承を利用して、**に応じてprototype.initを柔軟に変えるのが目的だろう
    503 : Name_Not - 2014/09/21(日) 21:51:28.90 ID:???.net (+61,+28,-5)
    >>500
    今はサブドメインで分けるサービスが主流だと思う
    504 : Name_Not - 2014/09/21(日) 21:56:48.99 ID:???.net (+33,-24,-2)
    ツイッターはサブディレクトリじゃん?
    506 : Name_Not - 2014/09/21(日) 23:08:49.21 ID:???.net (+54,+22,-1)
    >>504
    TwitterはWebサイトじゃないでしよ
    507 : Name_Not - 2014/09/21(日) 23:09:22.20 ID:???.net (+51,+23,-1)
    意味わからんw
    508 : Name_Not - 2014/09/21(日) 23:11:46.47 ID:???.net (+36,-30,-225)
    >>505
    そういう使い方をするんじゃないよ。

    data-mainというのは、RequireJSを使ったモジュールは
    全部そこからスタートするという意味。

    グローバル変数は汚さないと考えるべきだから
    RequireJSのモジュールを、それ以外からは使えない。
    (実際にはグローバル変数を汚すことはできるが)

    共通のモジュールがあるのなら、RequireJSの世界に入ってから
    その最初でinclude、つまりrequire(['include', …])か、
    define(['include', …])するべきでしょう。

    まあlogin.jsの中でrequire()使ったら動くと思うけどね。
    でもそうするとr.jsによるファイルの結合ができないか面倒になるはず。
    509 : Name_Not - 2014/09/21(日) 23:36:13.48 ID:???.net (+61,+28,+0)
    >>508
    非常に勉強になりました
    ありがとうございます
    510 : Name_Not - 2014/09/22(月) 00:22:54.29 ID:???.net (+3,-30,-109)
    addeventlistenerの代に引数を無名関数にした時
    removeeventlistenerにarguments.calleeを使わないで削除する方法ってありませんか?
    es6でそういう便利なものが実装されたとかないですかね?
    511 : Name_Not - 2014/09/22(月) 00:30:28.04 ID:???.net (+17,-17,-16)
    >>507
    TwitterはWebホストレンタルサービスじゃない
    512 : Name_Not - 2014/09/22(月) 06:19:21.53 ID:7W1ojN0x.net (+13,+28,-1)
    そういう意味か
    513 : Name_Not - 2014/09/22(月) 09:27:44.05 ID:???.net (+2,-25,-20)
    es6に実装されてても今使えないなら意味ないじゃん
    514 : Name_Not - 2014/09/22(月) 17:15:50.68 ID:???.net (+31,-30,-26)
    // A
    (function(window){
    // B
    }(window));

    AとBのスコープのwindowは全く別物ですか?
    515 : Name_Not - 2014/09/22(月) 18:35:20.72 ID:???.net (+43,+25,+0)
    いいえ
    516 : Name_Not - 2014/09/22(月) 18:36:57.09 ID:???.net (+62,+29,-5)
    >>514
    変数としては別物だが、参照してる先は完全に一緒
    517 : Name_Not - 2014/09/22(月) 18:40:19.69 ID:???.net (+7,-30,-64)
    という事は無名関数の中でwindow.aaaa = 11ってやると
    外のwindowにも適用されるってことですか
    windowって名前を使わないでglobalを使うしかないですよね、いやなんですよねwindow.alert(1)の部分をglobal.alert(1)に書き換えるの
    (function(global){

    }(window));
    518 : Name_Not - 2014/09/22(月) 18:41:30.98 ID:???.net (+91,+29,-25)
    2014年現在で一番ためになるjavascriptの書き方で読むべき記事を教えてください
    functionを並べて使うのを脱出したいんです
    519 : Name_Not - 2014/09/22(月) 18:44:39.19 ID:???.net (+70,+29,-20)
    >>518
    functionが並ぶのがいかんわけではないと思うけど
    なにが不満なのん?
    520 : Name_Not - 2014/09/22(月) 18:55:52.97 ID:???.net (-1,-29,-17)
    >>517
    そう書いても、無名関数の中でglobal.aaaa = 11ってやったら、外のwindowにも適用されるぞ?
    521 : Name_Not - 2014/09/22(月) 18:56:58.44 ID:???.net (+72,+10,-22)
    ええええ、ってなると外のwindowでプロパティを書き換えたらglobalも書き換わっちゃうってことか
    それはこまった
    524 : Name_Not - 2014/09/22(月) 19:13:44.46 ID:???.net (+3,-30,-62)
    function framesyori() {
    frame = frame + 1;
    enemyidou();
    }
    setInterval(framesyori,33);

    これで解決すると思うんですけど、この敵がまた、40フレームごとに、30フレームに1マス動く敵を新たに召喚したりしたいんです
    なのでこのframesyori関数の外でできるようにしたいんですが
    525 : Name_Not - 2014/09/22(月) 19:18:14.99 ID:???.net (+80,+21,-45)
    全てのオブジェクトが
    完全にフレーム数に同期してないとイカンの?
    526 : Name_Not - 2014/09/22(月) 19:21:01.94 ID:???.net (+91,+29,-27)
    できればそうしたいです
    ていうか普通こういうフレームで動くゲームって動作原理どんなかんじなんでしょう?
    527 : Name_Not - 2014/09/22(月) 21:33:04.62 ID:???.net (+67,+29,-19)
    >>521
    困った原因はお前の技術不足だよ。

    変なコードを書かなければいいだけの話。
    528 : Name_Not - 2014/09/22(月) 22:53:12.06 ID:???.net (+92,+28,+0)
    >>525
    状態遷移するんだよ
    529 : Name_Not - 2014/09/22(月) 22:54:10.29 ID:???.net (+64,+26,-1)
    >>528>>526宛てだった
    530 : Name_Not - 2014/09/23(火) 00:13:13.94 ID:???.net (-2,-30,-44)
    function a(){
    console.log(this);
    }

    なんで関数内のthisがグローバルのwindowを参照するんですか?
    531 : Name_Not - 2014/09/23(火) 01:52:33.84 ID:???.net (+1,-25,-12)
    グローバル関数だから
    532 : Name_Not - 2014/09/23(火) 01:56:29.08 ID:???.net (+10,-17,-4)
    関数の中に関数を入れていた時
    thisはその関数の空間?になるんですか?
    533 : Name_Not - 2014/09/23(火) 02:07:49.40 ID:???.net (-1,-29,-44)
    strictmodeの時はthisはundefined
    非strictmodeの時はネストされていてもthisはwindowになるんですね
    534 : Name_Not - 2014/09/23(火) 03:42:08.24 ID:???.net (+110,+29,-45)
    また、「後で試したら1時間もかからず解決できました」のパターンか
    いい加減、質問する前に試せばいいのに
    535 : Name_Not - 2014/09/23(火) 05:32:42.47 ID:???.net (+75,+29,-18)
    C++からJavaScriptへ担当移動するんですが、似て全く非なる言語と聞きました。
    これは見とけ、または読んどけというサイト、良書があれば教えてください。
    536 : Name_Not - 2014/09/23(火) 09:20:47.22 ID:RioyDXRW.net (+38,+29,-22)
    >>534
    質問を書いたから気になったのだから
    その指摘には意味がありません
    537 : Name_Not - 2014/09/23(火) 09:33:33.32 ID:???.net (+72,+29,-24)
    >>534
    windowを参照するかしないかの質問だと捉えてる君は小学校の国語からやり直すべき
    538 : Name_Not - 2014/09/23(火) 10:03:25.80 ID:RioyDXRW.net (+30,+30,-69)
    ちなみに俺の質問ポリシーは、
    「自分が疑問に思うことは、他の人も疑問に思う」というものです
    つまり疑問をシェアしてるわけです
    その後にそれを解決するのが自分自身であっても、
    第三者であっても、それはどうでもいいことなのです
    疑問と回答を残すことが重要なのです
    539 : Name_Not - 2014/09/23(火) 10:22:30.77 ID:???.net (+6,-29,-22)
    >>531
    関数の中だからthisは関数を参照すると思うんですが何故windowを参照するのかがわかりません
    540 : Name_Not - 2014/09/23(火) 10:34:11.86 ID:???.net (+4,-28,-149)
    >>539
    thisにはコンテキストという特殊な値が設定されるので
    関数自身とは何の関係もないよ
    オブジェクトのメソッドが呼び出された時は、
    オブジェクトが設定される
    ハンドラが呼び出される時は、dom要素が設定される
    オブジェクトを指定せずに関数を呼んだ時には、
    非strictmodeならwindow、そうでない時はundefinedが設定される
    そういう風に恣意的に設定されるものがthis
    541 : Name_Not - 2014/09/23(火) 11:02:57.08 ID:???.net (+3,-29,-64)
    jabascriptのthisって概念は理解しにくいよね

    >javascriptの「this」は「4種類」??
    http://qiita.com/takeharu/items/9935ce476a17d6258e27

    これ>>477は「コンストラクタ呼び出しパターン 」なので、newが有る無しではthisのコンテキストが変わる
    542 : Name_Not - 2014/09/23(火) 11:27:00.44 ID:???.net (+63,+30,-93)
    最初はプログラム全体を
    ブロック状に組み合わさった構造物のように想像するんだよね
    でも実際はオブジェクトはフラットな平面に散らばっていて、
    細い紐でお互いを繋げてるだけ。
    ブロック構造を仮想的に強固にしている言語もあれば、
    ゆるゆるな言語もある。
    JSはゆるゆる。
    543 : Name_Not - 2014/09/23(火) 12:21:24.95 ID:???.net (-1,-29,-22)
    MS-Windows以外でも動作するのに、なんでWindowオブジェクトなんだろうか?
    544 : Name_Not - 2014/09/23(火) 12:38:51.73 ID:???.net (+6,-11,-11)
    GUIだから
    545 : Name_Not - 2014/09/23(火) 12:51:42.85 ID:???.net (+9,-30,-257)
    >>541
    その説明ムダに複雑になってるだけだよなー。

    thisなんて簡単。関数に見えない第0引数が有るだけ。

    function foo(a, b, c) { } という関数は実は
    function foo(this, a, b, c) {} であるということ。

    関数内でthisが何かって? そりゃ引数として渡されてきたものだよ。
    thisがどこを指すか? という問題は、a, b, cと全く同じように考えればいい。
    ようするにローカル変数。

    そして、第0引数の渡し方だが、

    obj.foo(1, 2, 3) という呼び出し方をすれば、 . の左側が第0引数になる。

    これが一般的な第0引数の渡し方だが、他にもやり方はあって、
    obj.foo.call(obj2, 1, ,2, 3) という風にcallやapplyを使えば、第0引数を直接指定できる。
    new foo(1,2,3)として呼び出せば、新しいオブジェクトが、第0引数になる。
    第0引数を省略した場合、つまりfoo(1, 2, 3) と呼び出したらグローバルオブジェクトになる。

    こんだけ。thisは見えない第0引数であるというだけでそれ以外特別なものはない。
    あとは第0引数を指定するやり方がいくつか有るだけ。
    547 : Name_Not - 2014/09/23(火) 13:27:31.38 ID:???.net (-1,-29,-3)
    Person()
    はそもそもあり得ないだろ
    Class()
    はあり得るが
    548 : Name_Not - 2014/09/23(火) 13:35:04.65 ID:???.net (+16,-30,-78)
    (function(){
    function Person(){
    console.log(this);
    }
    var a = new Person();
    var b = Person();
    console.log(a,); // window
    console.log(b); // Person {}
    }())
    549 : Name_Not - 2014/09/23(火) 14:00:18.61 ID:???.net (+3,-30,-145)
    >>546
    thisが何かの説明でしょ?

    > var person = new Person();

    newを使った呼び出しなのだからPerson()の中では
    第0引数は新しく作られたオブジェクト。

    > var person = Person();

    第0引数を何も渡してないのだから、
    グローバルオブジェクト(ブラウザにおいてはwindow)

    引数、a, b, c と同じく、呼び出す時に第0引数に
    何を渡すかって問題なのだから、Person()関数の中では
    渡しかた(呼び出し方)によってthisが変わる。
    550 : Name_Not - 2014/09/23(火) 14:02:08.38 ID:???.net (+3,-30,-100)
    なお、person.init(); は
    new Person() や Person() とは独立した話で
    どっちで作ったかどうかは全くの無関係。

    init()を呼び出す時の呼び出し方。つまり . を使った呼び出し方なので
    init() には personオブジェクトが第0引数として渡される。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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