That's how the JS prototype-based inheritance model is supposed to work. When set a property on b, it will be defined on b, never on its parents, unless you explicitly set the property on the parents. I agree that it's strange, and perhaps undesirable.
I was surprised by the following behaviour:
d8> var a = { foo: "hello" }; d8> var b = Object.create(a); d8> b.foo; hello d8> a.foo; hello d8> b.foo += " world"; hello world d8> b.foo; hello world d8> a.foo; hello
It is surprising because b.foo += " world"; behaves literally like b.foo = b.foo + " world"; and each b.foo refers to a different property (one is on the object a and the other on the object b). I wonder if all other JS VM's do the same.
Marc
Tachyon-list mailing list Tachyon-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/tachyon-list