使用Javascript时如下:
function Test(Example) {
}
Test.prototype.etc etc etc
function Example() {
}
Example.prototype.etc etc etc
example = new Example();
test = new Test(example);
这有效还是我以某种方式记忆?
我问这个,因为我目前在我的javascript游戏中有以下设置,每个都需要其他一些(括号内):
相机(帆布) 输入(画布,相机,瓷砖地图) 雪碧(相机,帆布)
我是以错误的方式来做这件事的吗?我应该通过其他方式传递这种方法吗?这令我感到担忧,因为我现在有很多新的sprite实例,并想知道它是否会成为一个问题。
干杯
答案 0 :(得分:1)
将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
的{{1}}保留的价值在方法之外。简而言之,property
和foo
指向同一个对象。
请记住,他们他们自己不是同一个对象。如果您重新指定parameter
以指向parameter
函数(bar
)中的新值,则parameter = "dummy";
将不会受到影响。这种区别是否有意义?
注意:但是当JavaScript字符串和数字作为参数传递时, 被复制。