通过JavaScript中的链继承将值发送到函数

时间:2017-10-24 01:05:41

标签: javascript

是否可以通过链将数组传递给函数?我遇到了一项针对某项工作的JavaScript测试,建议这是可行的。是吗?

var hereIsArray = [13,27,49,57];

function printArray() {
  // insert code here to print array...
  // this may read the parent of the chain,  or the variable placed before the function in the chain.
};

hereIsArray.printArray();

我熟悉将变量传递到括号之间的函数中,这将是我的方式。

以下是测试(问题#5)要求的副本。 “assignment.log”是他们为检查输出而创建的函数。你可以看到他们正在寻找的答案。

//#5 write code so that console logs print out true
//   add(addValue) should return a new arrays where addValue
//   is added to each value of original array
//   i.e. [6, 7, 8, 9, 10] and [11, 12, 13, 14, 15]

// [your code goes here]



var e = [1, 2, 3, 4, 5];

assignment.log(e.add(5) == '[6,7,8,9,10]', 5);

var d = [1, 2, 3, 4, 5];

assignment.log(d.add(10) == '[11,12,13,14,15]', 5);

2 个答案:

答案 0 :(得分:0)

Array.prototype.printArray = function(){
  return '['+this.toString()+']';
}
var ary = [0, 5, 7, 25];
console.log(ary.printArray());

答案 1 :(得分:0)

工作测试的简单直接答案是:

Array.prototype.add = function (amount) {
    return "[" + this.map(item => item + amount).toString() + "]";
};

还可以解释prototype是什么以及它如何帮助将事物附加到该类型的实例(您的主要问题),但是...如果我是你,我会向面试官提供一些首先提出改进建议:

  • add()更改为更好的名称(addToAll(),或许?),或者将其分解为一个函数,将该金额添加到每个项目,另一个函数将其转换为字符串;
  • 请勿使用var。这是2017年,我们有const(请参阅this);
  • 扩展(a.k.a.“将东西附加到”)本机原型被认为是不好的做法(参见this),所以我建议改为创建一个辅助函数;而且,如果你有一系列不是数字的东西并尝试调用该方法会发生什么?它不会按预期工作,所以这是另一个不把它附加到Array原型的好理由;
  • 我还要注意,断言中的==应替换为===,这被视为良好做法(请参阅this)。

访谈是关于让你的面试官感到惊讶的。也许他们不只是寻找简单明了的答案(实际上非​​常简单),但他们正在寻找能够指出所提供代码错误的人。我喜欢用一些不好的代码来面对我的受访者,看看他们会如何反应。一个优秀的程序员(你想聘请的人)将善意建议改进所提出的问题。