私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.128 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>796
"全てのfunction" には thisという引数がある。と言った通り補完してみればわかるだろう。
呼び出し元側は脳内で補完してくれ。ドットの前がthis、ただしcallとapplyを使えばそれをすげ替えられる。
function appendFunction (this, fn1, fn2) {
return function (this) {
fn1.call(this);
fn2.call(this);
};
}
var a = 0;
var obj = {
a: 10,
hoge: function(this){
this.a++;
}
}
obj.hoge();
console.log(obj.a);
console.log(a);
obj.hoge = appendFunction( obj.hoge, function (this) { console.log(1); });
obj.hoge();
console.log(obj.a);
console.log(a);
"全てのfunction" には thisという引数がある。と言った通り補完してみればわかるだろう。
呼び出し元側は脳内で補完してくれ。ドットの前がthis、ただしcallとapplyを使えばそれをすげ替えられる。
function appendFunction (this, fn1, fn2) {
return function (this) {
fn1.call(this);
fn2.call(this);
};
}
var a = 0;
var obj = {
a: 10,
hoge: function(this){
this.a++;
}
}
obj.hoge();
console.log(obj.a);
console.log(a);
obj.hoge = appendFunction( obj.hoge, function (this) { console.log(1); });
obj.hoge();
console.log(obj.a);
console.log(a);
>>802
お前の説明じゃどのタイミングで無名関数のthisがどう解決されるのかわからんぞ
お前の説明じゃどのタイミングで無名関数のthisがどう解決されるのかわからんぞ
>>797の言う通りだよ。
元々が特殊な条件の質問。
それに対する作者の想定がおかしい。
そして想定に対してのコードもおかしい。
何もかもおかしく歯車の噛み合っていない物に、
頑張って意味づけして理解する意義がどこにある?
元々が特殊な条件の質問。
それに対する作者の想定がおかしい。
そして想定に対してのコードもおかしい。
何もかもおかしく歯車の噛み合っていない物に、
頑張って意味づけして理解する意義がどこにある?
警告!警告!
appendFunctionに関する質問は
ライブラリ関係の話題を禁止とする条例に接触する恐れがあります
直ちに停止して下さい
appendFunctionに関する質問は
ライブラリ関係の話題を禁止とする条例に接触する恐れがあります
直ちに停止して下さい
最低でもappendFunctionを展開して説明すべきじゃ?
それでも意味あるかわからんけど……
それでも意味あるかわからんけど……
>>804
> お前の説明じゃどのタイミングで無名関数のthisがどう解決されるのかわからんぞ
無名関数って、obj.hogeにappendFunctionで入れたやつか?
その無名関数をobj.hoge()で呼び出してるんだから
無名関数の中身は、obj.hogeのドットの左側、objに決まってるだろう?
> お前の説明じゃどのタイミングで無名関数のthisがどう解決されるのかわからんぞ
無名関数って、obj.hogeにappendFunctionで入れたやつか?
その無名関数をobj.hoge()で呼び出してるんだから
無名関数の中身は、obj.hogeのドットの左側、objに決まってるだろう?
appendFunctionのクソコードでの説明いい加減やめろ
thisが呼び出し時に決定されるっていう一番重要な部分省いて自己満足な説明しすぎだ
thisが呼び出し時に決定されるっていう一番重要な部分省いて自己満足な説明しすぎだ
>>810
ほんこれ
ほんこれ
決まってるって
これ完全に相手への理解より解説が目的になっとりますわ
これ完全に相手への理解より解説が目的になっとりますわ
>>813
俺は(callやapplyで指定しない限り)ドットの左側のオブジェクトがthisになると言ってるわけで、
俺が言っていることを適用すると、そうなるだろ?
だから俺の説明に当てはめると、そう決まってるって言ってるんだが。
俺は(callやapplyで指定しない限り)ドットの左側のオブジェクトがthisになると言ってるわけで、
俺が言っていることを適用すると、そうなるだろ?
だから俺の説明に当てはめると、そう決まってるって言ってるんだが。
>>815
newがあるのでまずその説明の時点で間違ってるわな
newがあるのでまずその説明の時点で間違ってるわな
newが一番混乱してるだろう部分なのに
呼び出し時に決まるという部分を省いてドットの左とか言ってちゃ駄目だわな
呼び出し時に決まるという部分を省いてドットの左とか言ってちゃ駄目だわな
そもそも無名関数って言うけど名前は付いてるよね。
http://www.2ality.com/2015/09/function-names-es6.html#methods-in-object-literals
http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer-runtime-semantics-propertydefinitionevaluation
PropertyDefinition : PropertyName : AssignmentExpression の 6
http://www.2ality.com/2015/09/function-names-es6.html#methods-in-object-literals
http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer-runtime-semantics-propertydefinitionevaluation
PropertyDefinition : PropertyName : AssignmentExpression の 6
違う違う
無名関数がわからないって言ってる人は本来の意味の無名関数じゃなくて
オブジェクトが付かない関数呼び出しを言ってる
無名関数がわからないって言ってる人は本来の意味の無名関数じゃなくて
オブジェクトが付かない関数呼び出しを言ってる
ここで未だに関数hogeの直接書き換えじゃなくて
var hoge2=append(ほにゃらら);console.log(new hoge2);と別名でnewしてる理由がわからない俺が一言
newしなきゃ>>719のthis.a引き継ぎ問題解決してね?
var hoge2=append(ほにゃらら);console.log(new hoge2);と別名でnewしてる理由がわからない俺が一言
newしなきゃ>>719のthis.a引き継ぎ問題解決してね?
”無名関数”というのはあくまで定義が「無名関数定義」というだけであって
その定義によって作られる関数が必ずしも「無名関数」となるわけではない
なるのは変数やプロパティに入れない即時関数呼出のケースなどに限られる
その定義によって作られる関数が必ずしも「無名関数」となるわけではない
なるのは変数やプロパティに入れない即時関数呼出のケースなどに限られる
>>816
今までの話でnew出てきてないじゃん?
newの説明もつけ加えるならば、クラスもfunctionなのだから
thisという引数がある。
function Klass(this) {・・・}
このKlassを、Klass()と呼び出せば、ドットがないので
Klassのthisはグローバルオブジェクトのwindow。
obj.klass = Klass などして、obj.Klass() と呼び出せばthisはobj。
ここまでは一緒。
今まで出てきてないnewの話を「追加」するならば、
new Klass() と実行すると、Klassのインスタンスになるってだけだよ。
ルールをまとめると、ある関数を呼び出す時
・ドットの左側がある・・・this引数にドットの左側のオブジェクトが入る
・ドットの左側がない・・・this引数にグローバルオブジェクト(window)が入る
・callやapplyを使っている・・・ドットの左側と無関係に、callやapplyの第一引数がthis引数に入る。
・newを使っている・・・インスタンスオブジェクトが作ら、そのオブジェクトが入る。
今までの話でnew出てきてないじゃん?
newの説明もつけ加えるならば、クラスもfunctionなのだから
thisという引数がある。
function Klass(this) {・・・}
このKlassを、Klass()と呼び出せば、ドットがないので
Klassのthisはグローバルオブジェクトのwindow。
obj.klass = Klass などして、obj.Klass() と呼び出せばthisはobj。
ここまでは一緒。
今まで出てきてないnewの話を「追加」するならば、
new Klass() と実行すると、Klassのインスタンスになるってだけだよ。
ルールをまとめると、ある関数を呼び出す時
・ドットの左側がある・・・this引数にドットの左側のオブジェクトが入る
・ドットの左側がない・・・this引数にグローバルオブジェクト(window)が入る
・callやapplyを使っている・・・ドットの左側と無関係に、callやapplyの第一引数がthis引数に入る。
・newを使っている・・・インスタンスオブジェクトが作ら、そのオブジェクトが入る。
「オブジェクトが付かない関数呼び出し」ってわからんでもないけど、もやもやする
あんま仕様に詳しくなさそう
あんま仕様に詳しくなさそう
出てきてないじゃんて
自分で例に使ってるクソコードを棚に上げて何言ってんだよ
頭おかしすぎる
自分で例に使ってるクソコードを棚に上げて何言ってんだよ
頭おかしすぎる
というか、>>796で解決したんじゃ?
終わった質問にいつまでも解説を続けている気がする
終わった質問にいつまでも解説を続けている気がする
>>802にnew書いてないじゃん
クラスもfunction?
クラスというのは別に関数である必要もない
前スレで合ったようなプロトタイプを活かしたチョットRubyっぽい
オブジェクトであるメソッドの寄せ集め構造を書いても立派なクラスだろ
クラスというのは別に関数である必要もない
前スレで合ったようなプロトタイプを活かしたチョットRubyっぽい
オブジェクトであるメソッドの寄せ集め構造を書いても立派なクラスだろ
クソコード、クソコードとうるさいな
理解したくもないなら黙ってればいいのに
理解したくもないなら黙ってればいいのに
グローバルオブジェクトが渡されるというのもちょっとニュアンスが変じゃないか?
thisがnull/undefinedのときにグローバルオブジェクトになったり、ボックス化されるのは
sloppyモード時のむしろ例外に近いような動作で処理の後ろのほうだ
thisがnull/undefinedのときにグローバルオブジェクトになったり、ボックス化されるのは
sloppyモード時のむしろ例外に近いような動作で処理の後ろのほうだ
>>802 のこの部分に注目な。
function appendFunction (this, fn1, fn2) {
// ★
return function (this) {
// ☆
fn1.call(this);
>>796 では thisが引数にないから、thisはどうなるの?って混乱する。
function appendFunction (fn1, fn2) {
return function () {
fn1.call(this);
でも>>802だとわかるだろう?
appendFunctionの中身、★の部分ではthisはappendFunctionを呼び出した時の
ドットの左側になるが、☆の部分では無名関数の引数のthisによって
外の(appendFunctionの)this変数が隠されている。
function appendFunction (this, fn1, fn2) {
// ★
return function (this) {
// ☆
fn1.call(this);
>>796 では thisが引数にないから、thisはどうなるの?って混乱する。
function appendFunction (fn1, fn2) {
return function () {
fn1.call(this);
でも>>802だとわかるだろう?
appendFunctionの中身、★の部分ではthisはappendFunctionを呼び出した時の
ドットの左側になるが、☆の部分では無名関数の引数のthisによって
外の(appendFunctionの)this変数が隠されている。
>>825
わかりやすい説明を頼む
わかりやすい説明を頼む
> ○ ドットの左側がなければグローバルオブジェクト(window)だ
Non Strcit Modeではundefinedというのは蛇足なので指摘不要かなと思ったが、他の人が指摘してくれた、嬉しい
Non Strcit Modeではundefinedというのは蛇足なので指摘不要かなと思ったが、他の人が指摘してくれた、嬉しい
>>827のいうように終わった質問で延々と議論するのは不毛ではないですかね?
質問者そっちのけで議論する意味があるとは思えないのですが
質問者そっちのけで議論する意味があるとは思えないのですが
とりあえず長文書けば説明したことにするのやめませんかね
それ説明した気になってるだけなので
それ説明した気になってるだけなので
別にappendFunctionを用いて説明する必要ないだろ。
もっと簡略化したとこから説明してやればいいのに。
もっと簡略化したとこから説明してやればいいのに。
>>834
hoge();
hoge();
厳密には違う部分も見受けられるが、初心者向けの説明としてはこの辺でいいのでは?
http://qiita.com/takeharu/items/9935ce476a17d6258e27
ぐだぐだと長文で説明するだけ無駄
http://qiita.com/takeharu/items/9935ce476a17d6258e27
ぐだぐだと長文で説明するだけ無駄
796だけど言われてる通り796時点でバッチリ解けた
ほんとすまん
ほんとすまん
>>840
俺の説明で氷解したって言ってるけど?w
俺の説明で氷解したって言ってるけど?w
>>844
> ぐだぐだと長文で説明するだけ無駄
いや、そこに書いてある文章よりも、
このスレの説明のほうが短いんだがw
それにその文章は、this引数が内部の関数のthis引数で
隠されるということが説明されていない。
> ぐだぐだと長文で説明するだけ無駄
いや、そこに書いてある文章よりも、
このスレの説明のほうが短いんだがw
それにその文章は、this引数が内部の関数のthis引数で
隠されるということが説明されていない。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + 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
トップメニューへ / →のくす牧場書庫について