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循环的任何东西?
答案 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或者适当的任何东西)而不是依赖于许多参数的参数顺序。