我确定这必须存在于某个地方,但我一直无法找到它......
我正在尝试编写一个将对象作为参数并更新其引用的函数.不是引用的属性,也不是重新分配对象,而是更新整个引用.
请注意,PubSub只是为了证明在传入和更新的对象类型中需要异步性和灵活性.
最好用例子解释:
//ideally how function would work
function watch(event, obj) {
PubSub.on(event, function(model) {
// I want to update the entire object
// I understand that currently, this is just reassigning
// I know I can do obj.prop = model, but that's not what I want to do
obj = model;
}
};
//example usage
var myObj = {"name" : "Tom"};
watch("anEvent", myObj);
console.log(myObj.name); //still "Tom"
// time passes, then somewhere
PubSub.trigger("anEvent", {"name" : "John"})
console.log(myObj.name); // now should read "John"
Run Code Online (Sandbox Code Playgroud)
这是一种bind()方法,例如$.bind()或者currying是有用的,还是只是在适当的上下文中使用"this"?
这是不可能的.
令你困惑的是,在js运行时,你没有办法管理实际的参考值,但只能为变量赋予一些参考值.
就是这样 - 你可以"附加"对给定变量名的另一个引用,但是你不能修改引用值.
要清除我上面所说的内容:对象的内存在其初始化时分配
var o = {};
Run Code Online (Sandbox Code Playgroud)
之后,对未命名对象(对象没有名称,变量为)的引用被分配给o变量.之后,您无法将另一个对象重新分配到内存中的同一位置.