前提・実現したいこと
map
を使用せずに関数で実現する。。。という問題をといていましたが、this
やオブジェクト自体の扱いがわからずつまずきました。答えのコードを見てもさっぱり理解できないため、質問させていただきます。
問題
JavaScript
1var s = [23, 65, 98, 5]; 2 3Array.prototype.myMap = function(callback) { 4 var newArray = []; 5 // Only change code below this line 6 7 // Only change code above this line 8 return newArray; 9}; 10 11var new_s = s.myMap(function(item) { 12 return item * 2; 13});
該当のソースコード
JavaScript
1var s = [23, 65, 98, 5]; 2 3Array.prototype.myMap = function(callback) { 4 var newArray = []; 5 6 // Add your code below this line 7 for (let i = 0; i < this.length; i++) { 8 newArray.push(callback(this[i])); 9 } 10 // Add your code above this line 11 12 return newArray; 13}; 14 15var new_s = s.myMap(function(item) { 16 return item * 2; 17});
疑問点
for (let i = 0; i < this.length; i++) {
にあるthis
で、var s = [23, 65, 98, 5];
の配列を指しているのはわかるのですが、なぜ
Array.prototype.myMap = function(callback) {
の中でthis
で変数sを読み込むことができるのでしょうか?
callback(this[i])
ですが、newArray.push(callback(this[i]));
でなぜcallbackを指定して
var new_s = s.myMap(function(item) { return item * 2; });
の処理を実行することができるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 10:31
2020/11/18 10:31
2020/11/18 10:53
2020/11/18 17:33