gpt4 book ai didi

JavaScript 对象创建/关联性

转载 作者:行者123 更新时间:2023-11-29 18:26:13 27 4
gpt4 key购买 nike

有人可以解释以下代码片段的输出行为吗?

function Vertex(x, y, z) {
this.x = parseInt(x);
this.y = parseInt(y);
this.z = parseInt(z);
};

var set = {};

var v1 = new Vertex(1,2,3);
var v2 = new Vertex(2,3,4);
var v3 = new Vertex(1,2,3);
var v4 = new Vertex(4,5,6);

set[v1] = 10;
set[v2] = 11;


alert(set[v1] + " " + set[v2] + " " + set[v3] + " " + set[v4]);
// Output: 11 11 11 11

最佳答案

对象属性是字符串,所以如果您尝试执行 set[v1] = 10;v1 将被转换为字符串(字符串将是 [object Object]) 所以基本上你会得到 set['[object Object]'] = 10; 这将发生在你所有的对象上,你设置的每个值都会覆盖以前的值.

所以你的代码等价于这个

function Vertex(x, y, z) {
this.x = parseInt(x);
this.y = parseInt(y);
this.z = parseInt(z);
};

var set = {};

var v1 = new Vertex(1,2,3);
var v2 = new Vertex(2,3,4);
var v3 = new Vertex(1,2,3);
var v4 = new Vertex(4,5,6);

set['[object Object]'] = 10;
set['[object Object]'] = 11;

alert(set['[object Object]'] + " " + set['[object Object]'] + " " + set['[object Object]'] + " " + set['[object Object]']);
// Output: 11 11 11 11

关于JavaScript 对象创建/关联性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com