元スレ+ JavaScript の質問用スレッド vol.119 +
JavaScript覧 / PC版 /みんなの評価 :
703 = :
前提となる対象ブラウザがないから後出しになる
以前のテンプレならテンプレ嫁で済んだのにな
704 = :
なんでJavaScriptのメソッドって
長いものばっかりなんだろうか?
誰が戦犯なん? Java?
705 = :
ショートコーディングの風潮はjQueryの功罪かな
706 = :
>>705
rubyとかpythonとかもjQueryのせいで
短いメソッドばかりになったの?
707 = 694 :
長くても分かりやすい方がいいじゃん
709 = :
ここ流れが早くて何番目で自分が質問したか分かんなくなった
710 = :
自分の質問内容ぐらい自己管理しろよ
711 = :
クラス作成で
function C_ball(F){
alert(F);
}
とするとエラーが出るのに
function C_ball(name){
alert(name);
}
だとエラーが出ませんでした
もしかしてFは予約後なのでしょうか?
712 = :
function hoge(){
function moge(){
foge();
}
function foge(){
console.log('foge');
}
return moge;
}
hoge()();
こうすると、moge経由で、
hogeの中で定義されているfogeが実行されます。
今まで意識していなかったのですが、
「関数の中から他の関数を呼ぶとクロージャになる」
と考えていいのでしょうか?
713 = :
その行が関数の中にない場合は
windowの代わりにthisって書いてもいいですか?
714 = :
>>713
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/this
715 = :
リファレンスには、いいか悪いかは書いていないようです
jshintに文句言われたので、windowと書くことにしました
718 = :
>>712
JavaScriptのすべての関数はクロージャーだよ。
クロージャーになるんじゃなくて、最初から全てクロージャー
クロージャーが普通の言語しか使ったことがない人は
なにがクロージャーなのかよくわからないと思う。
クロージャーはあまりにも自然だからね。
クロージャーを知るには、クロージャーではないものを知るのがわかりやすい。
ということで、クロージャーがないJavaの例
Javaにはクロージャーはなく、似たようなものとしてラムダ式がある。
ラムダ式の変数のスコープ
http://www.ne.jp/asahi/hishidama/home/tech/java/lambda.html
ラムダ式は似たような形をしているがいろいろ制限があるよね?
JavaScriptの感覚だと、できそうなことができない。
この「できそうなこと」というのはコードを見てそう思うはず。
このコードをみた感じ、つまりコードの構造をみて、できそうだなと思ったことが
レキシカルスコープ(構文構造のみから決定できるため構文スコープ)という言葉の意味なんだ。
719 = :
クロージャーについて説明できる人いないでしょ
720 = :
ここにいるよ。
クロージャとは、関数が外のスコープに存在する変数の参照を保持し続けること。
はい論破
721 = :
関数オブジェクトは
外のスコープに存在するオブジェクトへの参照を
どこに持ってるんですか?
それを一覧で見たりできないんですか?
722 = :
>>720
中途半端な知識晒して論破てwwwwwwwww
723 = :
スコープチェーン?
スコープチェーンに残っている場合はGCされない、ということでしょうか?
だとしたら、
function hoge(){
var a = 100;
return function(){};
}
のような処理でも、aはGCされないまま残り続けるのでしょうか?
724 = :
chromeのデバッガで確認したところ
function hoge(){
var a = 100;
return function(){
};
}
だとfunction scopeは空でした
function hoge(){
var a = 100;
return function(){
return a*2;
};
}
だとfunction scopeにclosureがありました
やはり参照の有無によりクロージャになるかならないか決まるようです
725 = :
最適化の可能性は?
726 = :
使わない変数を残し続けるのは不自然なので
デフォルトで行われる合理化なのでは?
内部の挙動は分かりませんが
728 = :
namespaceの書き方なんてjsには存在しない。
そも、
>>var top = top || {};
が必ずしも正しいかは書くやつが自分で判断しなければならない。
>>top || {} ってどういう仕組で動いているんですか?
jsの論理演算は特殊というか、厳密ではないことを利用してるってだけだ。
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators
729 = :
window.eventと
window.onclick=click;
function click(e){//このeは同じeventオブジェクトですか?
}
730 = :
JavaScriptパターンを再読していますが
S級著者のステートフルJavaScriptと比べると、やはり文章の精度が劣りますね
ここでプロトタイプ連鎖を説明するのに使った __proto__ は
(たとえば Firefox など) いくつかの環境では提供されていますが、
JavaScriptは利用できません。
こういう悪文がわりと出てきます
731 = :
>>729
以前気になって調べたけど
基本的に同じで、
window.eventは古いブラウザでしか使えなかったと思う
732 = :
>>731
ありがとうございます
733 = :
>>732
同じだけど、書き方を工夫すれば使わなくて済むので基本的に使わない
736 = :
ちなみに、window.eventと引数のeventは似ているが同じではない。
だからvar e = event || window.eventみたいに
どっちかを使うというコードを書いていると変な所でハマることになる。
jQueryのeventはこのどちらでもないjQuery.Eventという
W3C標準に準拠されたeventオブジェクトになっている。
737 :
>>735
なつかしーなおい
738 = :
結局jquery使えば問題ないんだろ
はい論破
739 = :
>>730
原文読めアホ
740 = :
>>739
言いたいことは分かるし原文に当たるほどの文章じゃないから。
ディスりたいだけの頓馬乙
741 = :
親クラスのコンストラクタを呼び出すにはどうしたらいいですか?
this.__proto__.constructor
で呼べると思いますが、__proto__は使わない方がいいので悩みます
742 = :
>>741
なんかのライブラリ使ってみた?
そういうソースコード見ると役に立つよ。
743 = :
>>741
this.__proto__.constructor.call(this);は無限再帰になるよ
直接親のコンストラクタ関数をcallするのが手っ取り早い
superはES6のclass構文が実装されるまで待とう
744 = :
>>730
S級著者じゃないから悪文を書いてるという勘違いしてるあたり、技術書をほとんど読んだことない初心者でしょ?
749 = :
jQueryでさくっとかいて、
それを冗長に書きなおすのって流行ってるな。
jQueryをどうしても使えない会社は
このやり方をするしか無いのかな。
750 = :
>>735
> そして、attachEventで登録する関数にはeventオブジェクト引数がない。
そんな事はない。
attachEvent にはhandlerの第一引数にeventオブジェクトを渡す機能が実装されている。
Event Interface が DOMと完全な互換性はないのでクロスブラウザの為のコードが必要だが。
> その代わりにあるのがwindow.event。
window.eventは厳密に言えば代替にはならない。
グローバル空間でeventを拾っている為、負荷の高い処理をしてタイミングを違えると別のイベントを拾ってしまう。
その為、可能な限り使用を控えるべきだし、window.eventを使用しなければ書けないコードは少ないはずだ(少なくとも私は思いつかない)。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [97%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.111 + (1001) - [97%] - 2013/11/4 6:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [95%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
トップメニューへ / →のくす牧場書庫について