使用Javascript對象,其中屬性覆蓋有效,應該可以在任何瀏覽器中工作?(Javascript)覆蓋對象的內置或繼承屬性?
// Dot notation overrides
var obj1 = {};
obj1.hasOwnProperty = 123;
obj1.constructor = 'Oh! I am not a constructor';
console.log(obj1.hasOwnProperty); // 123
console.log(obj1.constructor); // => 'Oh! I am not a constructor'
// Braces notation overrides
var obj2 = {};
obj2['hasOwnProperty'] = 123;
obj2['constructor'] = 'Oh! I am not a constructor';
console.log(obj2['hasOwnProperty']); // 123
console.log(obj2['constructor']); // => 'Oh! I am not a constructor'
在Firefox和Chrome中,所有這些工作都正常嗎?我可以安全地依靠這個嗎?
如果是,是否有任何不能被覆蓋的對象屬性?
P.S.我並沒有說「重寫hasOwnProperty
是不安全的,因爲有人可以調用你的對象的hasOwnProperty
」。 我只是說,是否應該覆蓋只是工作。
你說的是主機對象或本地對象? – David
@David原生對象,我想。用大括號創建:'obj = {};' – thybzi