使用Javascript时如下:
function Test(Example) {
}
Test.prototype.etc etc etc
function Example() {
}
Example.prototype.etc etc etc
example = new Example();
test = new Test(example);
这是有效的还是我以某种方式占用内存?
我问这个是因为我目前在我的 javascript 游戏中有以下设置,每个设置都需要其他一些设置(在括号中):
相机( Canvas ) 输入( Canvas 、相机、瓷砖 map ) Sprite (相机、 Canvas )
我是不是用错了方法?我应该以其他方式传递此方法吗?这让我很担心,因为我现在有很多新的 sprite 实例,想知道它是否会成为一个问题。
干杯
最佳答案
JavaScript 对象(和函数)在作为参数传递时不会被复制。看看下面的代码(或在 JSFiddle 上测试它):
function Foo() {};
Foo.prototype.property = 5;
function incrementProperty(parameter) { parameter.property++; };
var foo = new Foo();
alert(foo.property); // 5
incrementProperty(foo);
alert(foo.property); // 6
alert(new Foo().property); // 5, because it's a new object
foo
对象在传递给 bar
函数时不被复制。 foo
的 property
在方法之外保留值这一事实证明了这一点。简单地说,foo
和parameter
指向同一个对象。
但请记住,它们它们自己 不是同一个对象。如果您重新分配 parameter
以指向 bar
函数中的新值 (parameter = "dummy";
),foo
不会受到影响。这种区别有意义吗?
注意:JavaScript 字符串和数字在作为参数传递时会被复制。
关于javascript - 传递函数只是一个链接吗? Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708541/