@angular/common
人不会变得不确定,只有指针?
答案 0 :(得分:1)
您可以使用包装对象来模拟该行为:
const reference = value => ({
value,
free() { this.value = undefined },
});
const val = ref => ref.value;
let person = reference({name: "Annah", age: 18});
let pointer = person;
console.log(val(person));
pointer.free();
console.log(val(person));
由于无法再访问person.name
,因此必须使用val(person).name
取消引用。
理论上,您可以创建两个引用同一事物的变量:
with({
person: undefined,
get pointer() { return this.person; },
set pointer(value) { this.person = value },
}) {
person = { some: "test" };
console.log(pointer);
pointer = undefined;
console.log(person);
}
但是请不要那样做(除了娱乐)。
答案 1 :(得分:0)
创建一个对象来包含您的记录,并通过它们的标识符访问它们。例如,使用name
作为标识符:
const people = {};
const person = { name: "Annah", age: 18 };
people[person.name] = person;
console.info(people[person.name]); // Annah is there
delete people[person.name];
console.info(people[person.name]); // undefined - Annah is gone
答案 2 :(得分:0)
从ES6开始,javascript中没有指针,但是对此有一种解决方法...
指针类:
/****
USAGE:
var a = 3;
var b = new Pointer("a")
b.value = 1
console.log(a) // Logs "1"
****/
class Pointer{
constructor(str){ // Called when "new Pointer()"
this.var = str // Assign Pointer.var to the string
this._value = window[str]
}
set value(value){
window[this.var] = value
this._value = value
}
get value(){
return window[this.var]
}
changeLocation(str){
this.constructor(str)
}
delete(){
delete window[this.var]
}
}
示例
// Put the Pointer Class HERE
var person = {name: "Annah", age: 18}; // Notice that let => var as Pointer cannot access lets and consts
var pointer = new Pointer("person"); // Pointer to person
pointer.value = undefined; // Sets value to undefined
// OR:
pointer.delete() // Deletes it permanently