元スレ+ JavaScript の質問用スレッド vol.128 +
JavaScript覧 / PC版 /みんなの評価 :
751 = :
>>748
偉いプログラマはどうなるんですか
752 = :
>>748
君に同意する
753 = :
>>751
ここには来ない
754 = :
もうそれこそ>>750が適当に書いた可能性だって合ったわけだし、
なんだって合ったわけでそんなんに一々付き合ってはいられない。
自分は自分なりに質問を判断して回答し、
一々他の回答にイチャモン付けないというのが最も正しい。
良くない回答だと思うのであればより良い回答を示せばいいだけのこと。
何故それが出来ない。
755 = 718 :
>>750
あくまで個人の見解として聞いて欲しいのだが、
「未検証だけど、こんなコードでどう?」ぐらいは伝えても良かったのでは、と思う
何も検証してなくて>>650の受け答えは開き直られたようで正直、いい気持ちはしなかった
756 = :
appendFunctionなのに実際はfunctionだけじゃないというのがイケてないな
クロージャー渡してるから確かにfunctionは渡してるけど
757 = :
758 = :
>>756
そこじゃない
型チェックが無いコードはjavascriptではよくある事
引数渡してないのが一番問題
759 = :
うーん、もっと根本的な部分がおかしいと思う
760 = :
>>756
「実際はfunctionだけじゃない」とは?
761 = :
>>746
なんか被害者ぶりだしたようだけど最初に自分が偉そうに批評したことから全て始まったんだろ。
本当にすまないと思ってるなら言い訳抜きで謝ってはよこの流れを精算しろ。
762 = :
まあせめてこれぐらいは
http://jsfiddle.net/rrgxofby/
763 = :
変わってねー
764 = :
些細な行き違いで鬼の首取ったように騒ぎ立てることもない……
765 = :
>>756
何もしなくてもTypeErrorになるので型チェックは不要かと
766 = :
決め付けは良くない
決めつけると可能性厨が突っ込みにやってくるぞ
767 = :
>>766
誰に言ってる?検証してる?
768 = :
発 禿 同 彡⌒ミ 彡⌒ミ 争
生 同 .じ (´・ω・`) (´・ω・`) い
.し 士 .レ 〃⌒` ´⌒ヽ γ⌒´‐ - ⌒ヽ は、
.な で .ベ ( V~つ)人.゚ノV~つ)) 〉ン、_ `{ __ /`( )
.い し .ル ヽ_/〃仝ミ/~ヽ_/ (三0_´∧ミ キ )彡ノヽ`ヽ)
.! ! か の /~~~~~~~ヽ、  ̄ ノ~ミ~~~~.| 0三)
|__|\_ヽ / ヽレ´ |  ̄
〉 ) 〉 ) /_ へ \
// / / \ ̄ィ. \ )
(__) (__) i__ノ |, ̄/
ヽ二)
769 = :
あ、わかった
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 = :
どうでもいいけど「争いは、同じレベルの者同士でしか発生しない」が正しい信じている人が結構いそう
771 = :
>>770
正しいよ
これを正しくないというのは2chの共通解釈に慣れ親しんでないか、
皮肉が通じない糞真面目またはアスペ
772 = :
>>766
決めつけというか仕様書に書いてあったと思うけど
773 = :
正しくは争いは起こるがレベル差がある場合は早々に決着がつく、な
774 = :
>>771
http://goo.gl/LtMNyzの「よくある議論」参照
775 = :
>>772
それで本当に良いと言えるのかということを言ってるんだろう
776 = :
争い云々は
醜く争うのは貴方も嫌ってる相手と同じレベルになっちゃうかもよ
だからやめようねということでしかないのに
本当にそうなのかを考えようとする人って一体。。。
777 = :
>>775
ええと…、どういうことだろう
TypeErrorを返すよりも他に適切な処理があるという事かな?
それとも、使用を正しく実装していないブラウザがある可能性かな?
(これは検証すれば誰でもわかると思うので疑うなら自分で検証してください、だけど)
778 = :
同じレベルって言うのは
周りから見ると同じレベルに馬鹿ってことだろ。
779 = :
>>777
前者だろう
実際そういう議論荒れは前に何度も起きた
だから迂闊なことを言うな(このスレは息苦しい)というジョークだろう
780 = :
>>779
うーん…、コールバック関数でTypeErrorを返すのは一般的だと思うけど、それなら代替案を出して、というところかな
唯一解のある問題でもないと思うけど
782 = :
結論を言うと殆どの場合にevalは使うものじゃない。
例外は一般的ではないから例外という。
783 = :
>>763
この程度を最初から出せないのが終わっとると言う意味
785 = :
煽りはもうおなかいっぱいなので建設的な意見だけお願い
788 = :
初心者からES6規格読破者まで玉石混交だね本当に
789 = :
>>ただし、ドットの左側がthisになるという挙動は変更することができ、
>>callやapplyを使うことで、ドットの左側ではなく任意のオブジェクトをthisとして渡すことが出来る。
言い方がおかしい。
.callや.applyがメタプロパティなんかならまだ分かるがそうではない。
「ドットの左側がthisになるという挙動」は変わっていない。
callやapplyにドットの左側の関数がthisとして渡されるということは同じ。
callやapplyがよろしくやってくれるというのが正解。
791 = :
そんなこと言い出したら渡されるという表現も変
thisValueをthis値に設定した関数を呼ぶという方があってるんじゃないか?
まあ適当でいいんだよ適当で
792 = :
>>790
言葉じゃ伝わってこない
コードを書いて説明して
793 = :
>>790
> 無名関数が持ってるthisはグローバルオブジェクトだろ
無名関数はthisを持っていない。
thisは呼び出されるときに渡されるもの
794 = :
なお、window.a は何のことなのかさっぱりわからん
795 = :
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 = :
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 = :
>>790
786の説明が上手くない気がするんだが…
>>609はnew演算子で呼び出す事を期待していた
new演算子で呼び出した場合、対象の関数オブジェクトのインスタンスにthis値は束縛される
ところが、fn1(),fn2()のように呼び出してしまうとそれぞれthis値は該当関数のインスタンスに束縛されない
だからcallやapplyでthis値を束縛するわけ
通常の関数呼び出しならおそらくthis値は共有するまでもなく同じなので考慮する必要はないだろうが、callやapplyで呼び出したら同様の問題が発生する
799 = :
(無名)関数定義してんのどこ>function appendFunction
ならappendFunctionにとってのthisつまりグローバルオブジェクトか
appendFunctionの中の(無名)関数にとってのthisつまりappendFunctionが
(無名)関数の中で使われてるthisだろ、と勘違いしてた
800 = :
appendFunctionはクソで意味のない実装だから
初心者がコレの挙動についてどうこう考え無くていい
初心者こそ良い教材を使わないといけない
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.121 + (1001) - [97%] - 2022/11/29 16:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [97%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.138 + (1004) - [97%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
トップメニューへ / →のくす牧場書庫について