1
傳遞我有這個文件:打字稿:通過值或引用
object.ts:
export const myObject {
prop1: "prop1",
prop2: "prop2",
...
...
}
,我有這個類
我-class.ts
export class MyClass {
private obj: any;
constructor(obj: any) {
this.obj = obj
}
}
,我有這個文件:
個main.ts
import { myObject } from "object";
import { MyClass } from "my-class";
let class1 = new MyClass(myObject);
let class2 = new MyClass(myObject);
let class3 = new MyClass(myObject);
將創建類MyClass
這樣的實例由值或參考傳遞對象myObject
。以另一種方式,將myObject
對象被複制三次;我很關心記憶。
UDPATE
考慮這個其他例子:
我-class.ts
export class MyClass {
private obj: any;
constructor(obj: any) {
this.obj = obj
}
getValue(str: string) {
return obj[str];
}
}
function1.ts
import { myObject } from "object";
let myClass = new MyClass(myObject)
export function fn1(str: string) {
return myClass.getValue(str);
}
function2.ts
個import { myObject } from "object";
let myClass = new MyClass(myObject)
export function fn2(str: string) {
return myClass.getValue(str);
}
main.ts
import { fn1 } from "function1";
import { fn2 } from "function2";
console.log(fn1(str));
console.log(fn2(str));
將在第二個例子中創建的myObject
兩個副本?
我打算假設它具有與[Javascript評估策略]相同的評估策略(https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing) –
它是通過引用。是的,這是一個JavaScript問題。不是TypeScript。 – unional
@unional可以請檢查我更新的問題嗎? – m2008m1033m