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

Can you map function arguments to properties automatically?

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

p1.name // would print: John

有没有什么方法可以自动将函数参数映射到属性,而不必在函数体或任何使用 for 循环的地方明确说明 this.name = name; this.age = age;

你可以非常接近 ES6:

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

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

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

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