Bu gün es5 okuyorum ve küresel nesnenin bazı yerleşik özelliklerinde [[yapılandırılabilir]] özniteliğinin true olarak ayarlandığını ve bu özellikleri silebileceğimizi buluyorum.
Örneğin:
Array.prototype nesnesinin join yönteminin öznitelikleri vardır
{[[Writable]]:true, [[Enumerable]]: false, [[Configurable]]: true}
Böylece Array için birleştirme yöntemini kolayca silebiliriz:
delete Array.prototype.join;
alert([1,2,3].join);
Uyarı undefinedbenim krom 17, firefox 9, yani 10, hatta ie6;
Chrome 15 ve safari 5.1.1'de [[yapılandırılabilir]] özelliği true olarak ayarlanmıştır ve silme sonucu da doğrudur ancak nihai sonuç yine de geçerlidir function(){[native code]}. Bu bir hata gibi görünüyor ve krom düzeltti.
Bunu daha önce fark etmedim. Bence, kullanıcı kodundaki yerleşik işlevleri silmek tehlikelidir ve başkalarıyla çalışırken çok fazla hata ortaya çıkarır. Peki neden ECMAScript bu kararı verir?