実際にどういうケースで、thisを用いたコーディングが必要なのかがまだイメージできませんでした><
↓あえてthis
を使わず書いてみました。これはわかりますよね?
js
1var myObject = {
2 value: '俺',
3 show: function() {
4 console.log(myObject.value);
5 }
6}
7var ourObject = {
8 value: '俺たち',
9 show: function() {
10 console.log(ourObject.value);
11 }
12}
13
14myObject.show(); //'俺'
15ourObject.show(); //'俺たち'
よく見ると、show
メソッドが同じようなコードなのでまとめて書きたくなりますね。
↓でも、単純に書こうとすると、ちょっと困ります。
js
1var myObject = {
2 value: '俺',
3 show: show,
4}
5var ourObject = {
6 value: '俺たち',
7 show: show,
8}
9
10function show(){
11 console.log(?????.value); //????? は、myObject の時も ourObject の時もある。
12}
こういう場合どうするか。
↓引数に自分自身を渡せば上手くいきます。
js
1var myObject = {
2 value: '俺',
3 show: show,
4}
5var ourObject = {
6 value: '俺たち',
7 show: show,
8}
9
10function show(who){
11 console.log(who.value);
12}
13
14myObject.show(myObject); //'俺'
15ourObject.show(ourObject); //'俺たち'
でも、myObject
と2回書くのはだるいですね。
これが、2つだからまだいいですが、増えてくるとこうなります。
js
1var myObject = {
2 value: '俺',
3 show: show,
4}
5var ourObject = {
6 value: '俺たち',
7 show: show,
8}
9//...
10
11function show(who){
12 console.log(who.value);
13}
14
15myObject.show(myObject); //'俺'
16ourObject.show(ourObject); //'俺たち'
17yourObject.show(ourObject); //'お前ら'
18hisObject.show(hisObject); //'彼'
19herObject.show(herObject); //'彼女'
コピペで書くにしても、何かしら間違えそうです。
(ちなみに、1か所わざと間違えているところがありますが、気づきました?)
自分自身を参照できる書き方があれば楽ですよね。
↓たとえば、こんな感じで。
js
1var myObject = {
2 value: '俺',
3 show: show,
4}
5var ourObject = {
6 value: '俺たち',
7 show: show,
8}
9//...
10
11function show(){
12 console.log(this.value); // this
13}
14
15myObject.show(); //'俺'
16ourObject.show(); //'俺たち'
17yourObject.show(); //'お前ら'
18hisObject.show(); //'彼'
19herObject.show(); //'彼女'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/23 09:11
2018/05/24 12:07
2018/05/24 12:42
2018/05/24 13:48
退会済みユーザー
2018/05/26 21:36
2018/05/29 10:15