如何使用“this”关键字来调用

时间:2012-08-10 17:33:37

标签: javascript arrays function this

如何在接收数组和函数(convertFunc)的JavaScript中编写函数。该函数为数组的每个元素调用convertFunc。 应该通过 this 关键字访问该元素。 该函数应该返回convertFunc调用的返回值数组? 例如

function(array, convertFunc() {  // array=[1,2,3]
    return this+10;
} 

应该返回[11,12,13]

由于

4 个答案:

答案 0 :(得分:2)

  1. 创建功能,例如function map(arr, convertFunc) {
  2. 迭代数组arr的所有元素。
  3. 提示:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call
  4. 返回一个包含函数调用所有结果的数组。
  5. }
  6. 自己计算确切的细节,祝你好运:)

答案 1 :(得分:0)

array.map(callback[, thisObject]);可能适合您。

示例:

var nums = [1,2,3];

function FuncName(x)
{
    return x+10;
}

var result = nums.map(FuncName); //[11,12,13]

答案 2 :(得分:0)

如果您正在寻找扩展Array对象

,请尝试此操作
Array.prototype.convertFunc = function() {

var arr = this, i; // As you want array is access using the this keyword.

for(i = 0; i<arr.length; i++)
{
    arr[i] = arr[i] + 10;
}

return arr;
}

var myArray = [1,2,3];


 // Call like this
 myArray.convertFunc();

在此处http://jsfiddle.net/PYxzj/

<强>更新

要回答你的问题,试试这个

    // Pass your array and a function as parameter
function arrayModify(array, convertFunc)
{
  return array.convertFunc();
}


// This function iterates your array and adds 10 to each element.
var arrayAddFunction = function() {

   var arr = this, i;
   for(i = 0; i<arr.length; i++)
   {
      arr[i] = arr[i] + 10;
   }

return arr;
}

// Extending the array object
Array.prototype.convertFunc = arrayAddFunction;

var aa = [1,2,3];

// As you want send your array and a function as parameters to another function 
alert(arrayModify(aa,arrayAddFunction)); // -> [11, 12, 13]

在此处http://jsfiddle.net/qzB4e/

答案 3 :(得分:0)

var myFunc = function(fn) {  // array=[1,2,3]
    return fn(this);
};

myFunc.call(arr,function convertFunc(){
    return this+10;
});

但是,要解决您的确切问题:

var arr = [1,2,3], addTen = function(){
    for (var l=this.length;l--;) this[l] += 10;
};

addTen.call(arr);