我有两个清单
men=['x','y','z']
women=['a','b','c'];
和两个vabriable以html显示
selectedMan;
selectedWoman;
我想创建一个通用的选择方法
select(index,source,destination){
destination=source[index];
}
函数调用
this.select(2,this.men,this.selectedMan);
this.select(1,this.women,this.selectedWoman)
HTML
<p>Welcome to team {{selectedMan}}</p>
<p>Welcome to team {{selectedWoman}}</p>
但是在html中只显示对团队的欢迎
答案 0 :(得分:2)
参数按值传递,而不是通过引用传递。您的所有功能都是更改局部变量destination
的值。所以它实际上什么也没做。
this.select(1,this.women,this.selectedWoman)
比
更长,更不清晰this.selectedWoman = this.women[1];
如果你真的想要这样的功能,你需要,例如
select(index: number, array: Array<string>, callback: (s: string) => void) {
callback(array[index]);
}
并以这种方式使用它:
this.select(1, this.men, s => this.selectedMan = s);
或(但这不太安全,并且不允许缩小):
select(index: number, array: Array<string>, property: string) {
this[property] = array[index]);
}
并将其称为:
this.select(1, this.men, 'selectedMan');
答案 1 :(得分:2)
如果要创建一个通用函数,请以正确的方式执行。了解pass by value和pass by reference之间的区别。 What's the difference between passing by reference vs. passing by value?
<强>解决方案强>
方法定义
select(index,source){
return source[index];
}
方法调用
this.selectedMan=this.select(2,this.men)
this.selectedWoman=this.select(1,this.women);