我遇到了一个非常奇怪的问题,让我感到困惑,我不得不问问发生了什么。
这段简短的代码片段或多或少都是从我的代码中直接复制的。
<script>
Vertices = { Vertex : { numComponents: 2, data: [], } }
console.log(Vertices)
Matrices = new Float32Array(16*4);
Matrix = new Float32Array(Matrices.buffer, 1 * 16 * 4, 16);
Object.assign(Vertices,
{
InstanceMatrix : { numComponents: 16, data: Matrices, divisor: 1 },
} );
console.log(Vertices)
</script>
现在,令我难以理解的是这两个命令的输出。
最上面一个输出:
{Vertex: {…}}
InstanceMatrix: {numComponents: 16, data: Float32Array(64), divisor: 1}
Vertex: {numComponents: 2, data: Array(0)}
__proto__: Object
最底层的一个:
{Vertex: {…}, InstanceMatrix: {…}}
InstanceMatrix: {numComponents: 16, data: Float32Array(64), divisor: 1}
Vertex: {numComponents: 2, data: Array(0)}
__proto__: Object
顶级console.log命令如何在对象“顶点”中显示“InstanceMatrix”,尽管它是在日志命令之后分配的?
附带问题:为什么底部实际上与最高层不同?
谢谢!
答案 0 :(得分:0)
这只是控制台的一个怪癖。您看到的第一行(toString()
)是对象的var indexSettings = new IndexSettings
{
NumberOfReplicas = 0, // If this is set to 1 or more, then the index becomes yellow.
NumberOfShards = 5
};
indexSettings.Analysis = new Analysis();
indexSettings.Analysis.Analyzers = new Analyzers();
indexSettings.Analysis.TokenFilters = new TokenFilters();
var customAnalyzer = new CustomAnalyzer
{
//CharFilter = new List<string> { "mapping " },
Tokenizer = "standard",
Filter = new List<string> { "lowercase", "asciifolding" }
};
indexSettings.Analysis.Analyzers.Add("customAnalyzerLowercaseSynonymAsciifolding", customAnalyzer);
方法的结果,正如您所期望的那样,它在被调用时捕获对象的状态。下面打印的细节来自控制台,它们是“实时”的,即它们总是反映出现在的物体状态。