访问 Observable 数组的 Symbol(_latestValue) 元素
Access Symbol(_latestValue) elements of an Observable Array
printerViewModel['printerChecked']["Symbol(_latestValue)"]
我通过这段代码找到了值,但是从这个响应中打印出未定义的,请看这张图片
我需要数组元素的 Symbol(_latestValue) 中的 false 或 object
public 获取可观察值的方法是 运行 函数。所以在这种情况下,您应该能够通过调用检索 false
值:
printerViewModel.printerChecked()
调试器指示此 属性 键是 Symbol
。这意味着您无法使用字符串 "Symbol(...)"
.
访问它
符号通常用于向您隐藏内容,因此应该无法检索。
我能想到的唯一例外是 属性 是使用 Symbol.for
设置的。从这个util knockout uses可以看出,并不是这样的:
createSymbolOrString: function(identifier) {
return canUseSymbols ? Symbol(identifier) : identifier;
}
来源:https://github.com/knockout/knockout/blob/2bec689a9a7fcaaed37e6abb9fdec648f86c4f81/src/utils.js#L513
帮助您理解符号的一些基本片段:
const symbolFor = {
[Symbol.for("_latestValue")]: false
};
const symbol = {
[Symbol("_latestValue")]: false
};
console.log(
// This works because the key was created using `Symbol.for`
symbolFor[Symbol.for("_latestValue")],
// This does not work
symbol[Symbol.for("_latestValue")]
);
如果你有权访问设置这个属性的地方,你可以公开对符号的引用:
const secretKey = Symbol("secretKey");
const myObj = {
[secretKey]: false
};
console.log(
myObj[secretKey]
)
printerViewModel['printerChecked']["Symbol(_latestValue)"]
我通过这段代码找到了值,但是从这个响应中打印出未定义的,请看这张图片
我需要数组元素的 Symbol(_latestValue) 中的 false 或 object
public 获取可观察值的方法是 运行 函数。所以在这种情况下,您应该能够通过调用检索 false
值:
printerViewModel.printerChecked()
调试器指示此 属性 键是 Symbol
。这意味着您无法使用字符串 "Symbol(...)"
.
符号通常用于向您隐藏内容,因此应该无法检索。
我能想到的唯一例外是 属性 是使用 Symbol.for
设置的。从这个util knockout uses可以看出,并不是这样的:
createSymbolOrString: function(identifier) {
return canUseSymbols ? Symbol(identifier) : identifier;
}
来源:https://github.com/knockout/knockout/blob/2bec689a9a7fcaaed37e6abb9fdec648f86c4f81/src/utils.js#L513
帮助您理解符号的一些基本片段:
const symbolFor = {
[Symbol.for("_latestValue")]: false
};
const symbol = {
[Symbol("_latestValue")]: false
};
console.log(
// This works because the key was created using `Symbol.for`
symbolFor[Symbol.for("_latestValue")],
// This does not work
symbol[Symbol.for("_latestValue")]
);
如果你有权访问设置这个属性的地方,你可以公开对符号的引用:
const secretKey = Symbol("secretKey");
const myObj = {
[secretKey]: false
};
console.log(
myObj[secretKey]
)