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

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

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

501 = :

俺も知らんかったけどサブドメインは別になるらしい

502 = :

>>496
new じゃないと this が違うから全く狙い通りに動かない

**.prototype.init の 継承を利用して、**に応じてprototype.initを柔軟に変えるのが目的だろう

503 = :

>>500
今はサブドメインで分けるサービスが主流だと思う

504 = :

ツイッターはサブディレクトリじゃん?

506 = :

>>504
TwitterはWebサイトじゃないでしよ

507 = :

意味わからんw

508 = :

>>505
そういう使い方をするんじゃないよ。

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

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

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

まあlogin.jsの中でrequire()使ったら動くと思うけどね。
でもそうするとr.jsによるファイルの結合ができないか面倒になるはず。

509 = :

>>508
非常に勉強になりました
ありがとうございます

510 = :

addeventlistenerの代に引数を無名関数にした時
removeeventlistenerにarguments.calleeを使わないで削除する方法ってありませんか?
es6でそういう便利なものが実装されたとかないですかね?

511 = :

>>507
TwitterはWebホストレンタルサービスじゃない

512 :

そういう意味か

513 = :

es6に実装されてても今使えないなら意味ないじゃん

514 = :

// A
(function(window){
// B
}(window));

AとBのスコープのwindowは全く別物ですか?

515 = :

いいえ

516 = :

>>514
変数としては別物だが、参照してる先は完全に一緒

517 = :

という事は無名関数の中でwindow.aaaa = 11ってやると
外のwindowにも適用されるってことですか
windowって名前を使わないでglobalを使うしかないですよね、いやなんですよねwindow.alert(1)の部分をglobal.alert(1)に書き換えるの
(function(global){

}(window));

518 = :

2014年現在で一番ためになるjavascriptの書き方で読むべき記事を教えてください
functionを並べて使うのを脱出したいんです

519 = :

>>518
functionが並ぶのがいかんわけではないと思うけど
なにが不満なのん?

521 = :

ええええ、ってなると外のwindowでプロパティを書き換えたらglobalも書き換わっちゃうってことか
それはこまった

524 = :

function framesyori() {
frame = frame + 1;
enemyidou();
}
setInterval(framesyori,33);

これで解決すると思うんですけど、この敵がまた、40フレームごとに、30フレームに1マス動く敵を新たに召喚したりしたいんです
なのでこのframesyori関数の外でできるようにしたいんですが

525 = :

全てのオブジェクトが
完全にフレーム数に同期してないとイカンの?

526 = :

できればそうしたいです
ていうか普通こういうフレームで動くゲームって動作原理どんなかんじなんでしょう?

527 = :

>>521
困った原因はお前の技術不足だよ。

変なコードを書かなければいいだけの話。

528 = :

>>525
状態遷移するんだよ

529 = :

>>528>>526宛てだった

531 = :

グローバル関数だから

532 = :

関数の中に関数を入れていた時
thisはその関数の空間?になるんですか?

534 = :

また、「後で試したら1時間もかからず解決できました」のパターンか
いい加減、質問する前に試せばいいのに

535 = :

C++からJavaScriptへ担当移動するんですが、似て全く非なる言語と聞きました。
これは見とけ、または読んどけというサイト、良書があれば教えてください。

536 :

>>534
質問を書いたから気になったのだから
その指摘には意味がありません

537 = :

>>534
windowを参照するかしないかの質問だと捉えてる君は小学校の国語からやり直すべき

538 = 536 :

ちなみに俺の質問ポリシーは、
「自分が疑問に思うことは、他の人も疑問に思う」というものです
つまり疑問をシェアしてるわけです
その後にそれを解決するのが自分自身であっても、
第三者であっても、それはどうでもいいことなのです
疑問と回答を残すことが重要なのです

539 = :

>>531
関数の中だからthisは関数を参照すると思うんですが何故windowを参照するのかがわかりません

540 = :

>>539
thisにはコンテキストという特殊な値が設定されるので
関数自身とは何の関係もないよ
オブジェクトのメソッドが呼び出された時は、
オブジェクトが設定される
ハンドラが呼び出される時は、dom要素が設定される
オブジェクトを指定せずに関数を呼んだ時には、
非strictmodeならwindow、そうでない時はundefinedが設定される
そういう風に恣意的に設定されるものがthis

541 = :

jabascriptのthisって概念は理解しにくいよね

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

これ>>477は「コンストラクタ呼び出しパターン 」なので、newが有る無しではthisのコンテキストが変わる

542 = :

最初はプログラム全体を
ブロック状に組み合わさった構造物のように想像するんだよね
でも実際はオブジェクトはフラットな平面に散らばっていて、
細い紐でお互いを繋げてるだけ。
ブロック構造を仮想的に強固にしている言語もあれば、
ゆるゆるな言語もある。
JSはゆるゆる。

544 = :

GUIだから

545 = :

>>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引数を指定するやり方がいくつか有るだけ。

548 = :

(function(){
function Person(){
console.log(this);
}
var a = new Person();
var b = Person();
console.log(a,); // window
console.log(b); // Person {}
}())

549 = :

>>546
thisが何かの説明でしょ?

> var person = new Person();

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

> var person = Person();

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

引数、a, b, c と同じく、呼び出す時に第0引数に
何を渡すかって問題なのだから、Person()関数の中では
渡しかた(呼び出し方)によってthisが変わる。

550 = :

なお、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一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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