假设 ,我们想改变一个对象的toString,输出“我是个对象”。
var json = {
data:2
}
json.__proto__.toString = function(){
return "我是个对象";
}
console.log(json.toString()); // 我是个对象
var other = {
data:3
}
console.log(other.toString()); // 我是个对象 无辜中枪
如果通过__proto__.toString的方式去改变,会导致其他对象的toString也会受到影响,无辜躺枪。
var json = {
data:2
}
Object.defineProperty(json,'toString',{
value:function(){
return '我是个对象';
},
enumerable: false
})
console.log(json.toString()); // 我是个对象
var other = {
data:3
}
console.log(other.toString()); // [object Object] 不受影响
如果通过Object.defineProperty的方式去改变,不会对别人造成影响。