Por que uma atribuição de propriedade do object javascript através da notação de pontos NÃO desencadeia um setter definido paira essa propriedade?

Qualquer ninjas Javascript ou pessoas que leram o ECMA-262 5º cuidado paira explicair o seguinte comportamento?

vair obj = { p: {}, set prop(val){ for (vair key in val){ this.p[key] = "Set: " + val[key]; } }, get prop(){ return this.p; } } obj.prop = { // Assignment triggers setter foo: "Foo" } obj.prop.bair = "Bair"; // Assignment does not trigger setter console.log(obj.prop.foo); // Set: Foo console.log(obj.prop.bair); // Bair 

Eu achei o comportamento acima um pouco confuso porque eu esperava que as duas annotations de atribuição fossem funcionalmente equivalentes.

One Solution collect form web for “Por que uma atribuição de propriedade do object javascript através da notação de pontos NÃO desencadeia um setter definido paira essa propriedade?”

A diferença fundamental é que obj.prop = foo está mudando o que a propriedade prop de obj reference, enquanto obj.prop.bair = "Bair" está mudando apenas alguma propriedade do object ao qual obj.prop se refere, mas não altera a própria reference .

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.