root@test:~# node test.js
100
300
true
100
true
100
root@test:~# cat test.js
function Test(){
}
Test.prototype.v = 100;
var t = new Test();
console.log(t.v);
t.v = 300;
console.log(t.v);
console.log(delete t.v);
console.log(t.v);
console.log(delete t.v);
console.log(t.v);
If a property with the same name exists on the object's prototype chain, then, after deletion, the object will use the property from the prototype chain (in other words, delete only has an effect on own properties).