나는 샷으로 샷을 확장 중입니다. 연장 후, 왜 샷을 변경하면 샤트가 변경됩니까?jQuery는 객체 간의 참조를 만드는 것을 확장합니까?
var shat = [{bang:true}, {bumm: false}, {bong: false}]
var shot = [{bang:false}, {bumm: false}, {bong: false}]
$.extend(shat, shot)
shot[0].bang = true
console.log("shat", shat)
// prints
Object
bang: true // why is this true?
Object
bumm: false
Object
bong: false
shot [0] .bang = true 이후에 참조가 생성되거나 확장이 어떤 이유로 발생한다고 가정합니다. 문제는, 확장 후에 샷을 수정하고 싶지만, 물론 shat에 영향을 미치고 싶지는 않습니다. 왜 이런 일이 일어나고 있는지, 내가 그 일을 피하기 위해 할 수있는 일이 있으십니까? http://jsfiddle.net/yEnph/3/
하지만 shat [1] === shot [1]도 마찬가지입니다. 그것을 설명하는 방법? –
@GraceShao'shat [x] === shot [x]','x'는 확장 된 속성이었습니다 : 나는 "1"과 "2"라고 말해야했기 때문에 엉망이되었습니다. copied :) 당신은 대답에서 * 아주 정확합니다 * : 배열을 특별하게 취급하지 않습니다. 그러나'shat'과'shot'은 여전히 두 가지 다른 객체입니다 :'shat'의 속성은'shot'의 속성으로 막 (overridden)되었습니다. –
그것은 이해할 만하다 :-), 지금 나는 왜 여기에 뭔가를 할 때 어떤 문제도 없다는 것을 이해하려고 애 쓰고있다. http://jsfiddle.net/qnBmn/ – Hans