javascript - 是否有可能用JavaScript中的其他内存覆盖变量指向的内存?

标签 javascript pointers memory

假设我有一个指向该内存的变量,我实际上可以将该内存更改为全新的内存,以便指向该内存的所有其他变量现在都指向新内存吗?

var foo = function(obj){
    // I want to set obj to new memory
    obj = { bar: 'foo' }
}
var boo = function(obj){
    // can change properties to new memory
    obj.too = { hoo: 'doo' }
}

var zoo = { too: { woo: 'loo' } }

// no change of memory
console.log(zoo)
foo(zoo)
console.log(zoo)

// change of memory
console.log(zoo)
boo(zoo)
console.log(zoo)

最佳答案

简短的回答是"is"。当您有一个对象时,对该实例的任何/所有引用都将访问该实例的当前状态。但是,请理解,您可以拥有同一对象的多个实例,并且您对一个实例所做的操作可能不会影响其他实例。

这是一个更简化的示例:

var zoo = { 
  location: "San Diego"  
};

function getReference(){
  // All invocations of this function will get a reference to same instance
  return zoo; 
}

var o1 = getReference();  // reference to zoo instance is returned
var o2 = getReference();  // 2nd reference to zoo instance is returned

console.log(o1.location, o2.location); // San Diego, San Diego
o2.location = "NYC";
console.log(o1.location, o2.location); // NYC, NYC

// But, a reference to a different instance won't affect the others
var o3 = Object.create(zoo);
o3.location = "Washington DC";
console.log(o1.location, o2.location, o3.location); NYC, NYC, Washington DC

关于javascript - 是否有可能用JavaScript中的其他内存覆盖变量指向的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055367/

相关文章:

c - 函数中 char 指针数组的大小

php - unpack(C*,data) Eats Memory [php 在 unpack 函数上耗尽内存]

java - 垃圾收集器如何快速知道哪些对象不再有对它们的引用?

javascript - 如何在 iframe 内容变化时获取它的高度?

javascript - EXTJS 复选框显示为 [object Object]

javascript - 随机视频在 Chrome 中不起作用

c - 检查目录时出现指针问题

c++ - 关于指针的一些问题

python - 如何在 python 中创建内存对齐缓冲区,如 C 中的 posix_memalign

javascript - 如何构建javascript数组?