我有这个文件:
对象.ts:
export const myObject {
prop1: "prop1",
prop2: "prop2",
...
...
}
我有这门课
我的类.ts
export class MyClass {
private obj: any;
constructor(obj: any) {
this.obj = obj
}
}
我有这个文件:
主要.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
对象是否会被复制三次;我担心内存。
更新
考虑另一个例子:
我的类.ts
export class MyClass {
private obj: any;
constructor(obj: any) {
this.obj = obj
}
getValue(str: string) {
return obj[str];
}
}
函数1.ts
import { myObject } from "object";
let myClass = new MyClass(myObject)
export function fn1(str: string) {
return myClass.getValue(str);
}
函数2.ts
import { myObject } from "object";
let myClass = new MyClass(myObject)
export function fn2(str: string) {
return myClass.getValue(str);
}
主要.ts
import { fn1 } from "function1";
import { fn2 } from "function2";
console.log(fn1(str));
console.log(fn2(str));
第二个例子会创建 myObject
的两个副本吗?
最佳答案
对于您的第一个示例,myObject
只会创建一次,因为参数是通过引用传递的(或者指向对象的指针是通过值传递的)。
对于您的第二个示例,JavaScript 的评估策略没有任何变化,因此 myObject
仍将是同一个实例。但是如果你查看编译后的 JavaScript 代码,你会发现 function1.ts 和 function2.ts 将被包装在两个不同的函数中,这使得 myClass
成为两个不同的变量。
关于node.js - typescript :按值或按引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239171/