你能自动将函数参数映射到属性吗?

时间:2015-07-29 20:19:20

标签: javascript function arguments

var person = function(name,age){ // i want arguments[] = properties }
var p1 = new person("John",25);

p1.name // would print: John

有没有办法自动将函数参数映射到属性,而不必在函数体中明确说出this.name = name; this.age = age;或使用for循环的任何东西?

1 个答案:

答案 0 :(得分:3)

你可以与ES6非常接近:

function Foo(a, b, c) {
  Object.assign(this, {a, b, c});
}

这使用对象文字简写表示法来创建对象{a: a, b: b, c: c}并使用该对象上存在的任何属性扩展this

它不完全是你想要的,因为它无法检测参数名称,但是要短得多。

我建议如果你有足够的论据来解决维护问题,你可能需要考虑使用单个对象参数(Foo({first: 'foo', last: 'bar'}))并简单地使用Object.assign(或{{1或者适当的任何东西)而不是依赖于许多参数的参数顺序。