怎样在数组处理方法中使用this

回调函数中的this不做处理的话, this仍然会指向window, 解决方法有两种.

第一种: 使用另一个变量固定this, 适用于在对象方法中使用的情况.

var obj = {
    arr: [1,2,3],
    powerArr: function(){
        var self = this;
        self.arr = self.arr.map(function (item) {
            console.log(self);
            return item**2;
        });
    }
};

obj.arr; // [1,2,3]
obj.powerArr(); // Object;
obj.arr; // [1, 4, 9]

下面是实际执行结果:

第二种: 将this作为数组处理方法的第二个参数传递进去

var obj = {
    arr: [1,2,3],
    powerArr: function(){
        this.arr = this.arr.forEach(function(item){
            console.log(this);
            console.log(item**2);
        }, this);
    }
};

原文地址:https://www.cnblogs.com/aisowe/p/11660740.html

时间: 2024-08-02 16:07:39

怎样在数组处理方法中使用this的相关文章

数组的方法中那些会改变原数组呢?

不会改变原来数组的有:concat()---连接两个或更多的数组,并返回结果.every()---检测数组元素的每个元素是否都符合条件.some()---检测数组元素中是否有元素符合指定条件.filter()---检测数组元素,并返回符合条件所有元素的数组.indexOf()---搜索数组中的元素,并返回它所在的位置.join()---把数组的所有元素放入一个字符串.toString()---把数组转换为字符串,并返回结果.lastIndexOf()---返回一个指定的字符串值最后出现的位置,在

php中遍历数组的方法

参考网址:http://www.jb51.net/article/29949.htm 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用.先分别介绍这几种方法 PHP中遍历数组有三种常用的方法: 一.使用for语句循环遍历数组: 二.使用foreach语句遍历数组: 三.联合使用list().each()和while循环遍历数组. 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开

浅论C++数组传入方法后不能用sizeof计算到正确的数组大小

C++中我们经常会用到sizeof()来计算数组的大小 例如: 1 #include<iostream> 2 using namespace std; 3 4 void Length(int *p) 5 { 6 cout<<sizeof(p)<<" "<<sizeof(int)<<endl; 7 } 8 9 int main() 10 { 11 int n; 12 int pirce[] = {0,1,5,8,9,10,17,

Es6中如何使用splic,delete等数组删除方法

Es6中如何使用splic,delete等数组删除方法 1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标        len: 替换/删除的长度       item:替换的值,删除操作的话 item为空 如:arr = ['a','b','c','d'] 删除 ----  item不设置 arr.splice(1,1)   /

输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩 从大到小打印。三个功能(输入是一个函数,求平均分是一个函数,排序是一个 函数)都用函数实现,最后在main方法中调用。

/*5.输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩从大到小打印.三个功能(输入是一个函数,求平均分是一个函数,排序是一个函数)都用函数实现,最后在main方法中调用.*/ #include <stdio.h> int inputScore(){ int score; scanf("%d",&score); return score;} double avg(int scores[],int length){ int i,score = 0;

IOS 开发中遍历数组的方法及比较

数组,做为一种常用的数据类型,频繁出现在编码中,其中肯定少不了对数组的遍历,本博文对数组遍历,进行一下自己的归纳,如果是大牛,一笑而过就好,互相学习,欢迎指正. 话不多说直接进入主题 首先创建一个数组 /** 获取系统的语言数组 */ NSArray *languageArray = [[NSUserDefaults standardUserDefaults] arrayForKey:@"AppleLanguages"]; for 循环-C语言 因为在xCode 编译中支持C 语言,

关于数组方法中delete()与splice()的用法与不同点

关于数组方法中delete()与splice()的用法与不同点 一.delete arr[i]  删除数组的指定索引的项,删除的时候该项还是会占据原来数组的位置,只是该位置的值变成了undefined;  delete还会有返回值,当可以删除的时候返回值为true.另外delete还能够删除对象的某个属性,但是不能删除var定义的变量,此时返回值为false; var arr1 = [ 5 , 4 , 3 , 2 , 1 , 9 ]; console.log ( arr1 ); console.

JavaScript中数组Array方法详解

ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串.可以指定一个可选的符号或字符串在生成的字符串中来分隔数组的各个元素.如果不指定分隔符,默认使用逗号.注意:此方法不会改变原始数组 var arr = ['a', 'b', 'c']; console.log(arr.join());

Knockout中ko.utils中处理数组的方法集合

每一套框架基本上都会有一个工具类,如:Vue中的Vue.util.Knockout中的ko.utils.jQuery直接将一些工具类放到了$里面,如果你还需要更多的工具类可以试试lodash.本文只介绍一下Knockout中ko.utils中处理数组的一些方法. ko.utils.arrayForEach(array, callback) 与Array.prototype.forEach作用一致.提供函数(回调函数)对数组的每个元素执行一次.使用方法: var arr = [1, 2, 3, 4