传递函数只是一个链接?使用Javascript

时间:2012-01-03 06:08:16

标签: javascript oop prototype

使用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实例,并想知道它是否会成为一个问题。

干杯

1 个答案:

答案 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}}保留的价值在方法之外。简而言之,propertyfoo指向同一个对象。

请记住,他们他们自己不是同一个对象。如果您重新指定parameter以指向parameter函数(bar)中的新值,则parameter = "dummy";将不会受到影响。这种区别是否有意义?

注意:但是当JavaScript字符串和数字作为参数传递时, 被复制。