var obj = {};
Object.defineProperty(obj, "name", {
value: "john doe"
});
console.log(obj.name); // john doe
Object.defineProperty
如何为对象分配新属性?!
我们不会在新变量中调用它,那么如何在不返回new的情况下将其分配给主对象?!
是否使用变量的内存地址来分配属性?!
答案 0 :(得分:0)
是的,确实如此。当你传递它时,它会从obj
获得该地址。所有这些都发生在幕后。
实际上,上述陈述并非完全正确。根据规范,JavaScript获得的是对象的引用。 大多数实现使用内存地址作为引用,但规范并不需要它,而某些实现则以不同方式执行。例如,Narcissus引擎是用JavaScript编写的,但JavaScript无法访问内存地址,因此Narcissus必须以另一种方式实现引用。
但引擎实现引用的方式并不重要。重要的是这个引用存储在幕后的obj
中。 在C或C ++等语言中,您必须取消引用才能获取基础对象中的数据,但JavaScript会自动为您执行此操作。这就是为什么你没有听到JavaScript中被引用过的引用;由于自动处理,通常不需要谈论它们。但他们在那里。