Javascript 如何通过函数传递对对象的引用?
我想做:Javascript 如何通过函数传递对对象的引用?,javascript,jquery,arrays,namespaces,reference,Javascript,Jquery,Arrays,Namespaces,Reference,我想做: mkArray(xml, "artist", "namespace.newarray"); function mkArray(xml, tag, store){ store = []; $(xml).find(tag).each(function(i,v){ store.push($(this).text()); }); console.log(store); } 当然,这会覆盖存储的内容,而不是将其用作对命名空间属性的引用。正确的做
mkArray(xml, "artist", "namespace.newarray");
function mkArray(xml, tag, store){
store = [];
$(xml).find(tag).each(function(i,v){
store.push($(this).text());
});
console.log(store);
}
当然,这会覆盖存储的内容,而不是将其用作对命名空间属性的引用。正确的做法是什么?我原以为window[store]可以工作,但运气不好。您可以创建一个对象,然后传递该对象。然后,修改对象的属性:
var reference = {store: void 0}; // Or just {};
mkArray(xml, tag, reference); // <-- Pass the "reference"
console.log(reference.store); // <--- Yup.
function mkArray(xml, tag, o_store){
o_store.store = [];
$(xml).find(tag).each(function(i,v){
store.push($(this).text());
});
// console.log(o_store.store); // Look ahead
}
var引用={store:void 0};//或者只是{};
mkArray(xml、标记、引用);// 一般来说,最好避免有副作用的函数,例如更改其参数。如果您的函数应该创建一些东西,只需返回以下“东西”:
如果出于某种原因,这对您不起作用,您也可以修改函数参数,但对象本身应该在调用代码中创建:
// worse, but possible
function mkArray(xml, tag, store) {
// populate store...
}
myStore = [];
mkArray(xml, tag, myStore);
在这种情况下,我认为正确的方法是从mkArray
返回数组并分配它namespace.newarray=mkArray(xml,“artist”)
我刚刚注意到一个略带编辑的问题。我建议大家看看Matts的评论。如果要更改函数,而不编辑其余调用,请使用:var storeProps=store.split('.')、store=window;对于(var i=0;i
// worse, but possible
function mkArray(xml, tag, store) {
// populate store...
}
myStore = [];
mkArray(xml, tag, myStore);