03.07.2009, 15:42
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
А вы уверены, что Object.prototype.toString не используется нигде в нативных объектах/функциях? Просто таким финтом вы не обманули какую-то конкретную функцию, а потенциально сломали все. Сломать и обмануть -- разные вещи. Проще было написать
var isArray = function() { return false; };
Последний раз редактировалось Kolyaj, 03.07.2009 в 15:45.
|
|
03.07.2009, 15:46
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Kolyaj
|
А вы уверены, что Object.prototype.toString не используется нигде в нативных объектах/функциях?
|
А что используется?
|
|
03.07.2009, 16:11
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Kolyaj
|
Это не обмануть.
|
формально, [[Class]] host-объектов может быть и "RegExp", в таком случае - обмануть, практически же - не знаю, какая из реализаций такое может сделать, но стандарт не запрещает.
Последний раз редактировалось Dmitry A. Soshnikov, 03.07.2009 в 16:15.
|
|
03.07.2009, 16:12
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Riim, твой пример равносилен следующему:
Object = null;
alert(Object);
Все в пределах разумного же должно быть. Вот пример c opera, ведь никто не застрахован от того, что его скрипт не подключется после того, как в глобальном пространстве имен будет создана переменная opera? А если еще вспомнить, что IE добавляет глобальные ссылки на DOM-элементы по именам идентификаторов…
Сообщение от Kolyaj
|
ну хоть бы дал подумать
|
ладно в следующий раз не буду спешить)
Последний раз редактировалось Octane, 03.07.2009 в 17:34.
|
|
03.07.2009, 16:14
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Kolyaj
|
ну хоть бы дал подумать
|
какой тут подумать, тут чисто - получить соответсвующую инфу (либо знаешь, либо не знаешь), вопрос не "на подумать"
|
|
03.07.2009, 16:21
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Dmitry A. Soshnikov,
я ж специально не isArray выбрал . На regexp'ы в фреймворках проверки обычно нет. Так что тут задача была скорее в проведении аналогии. С чем, к сожалению, у многих проблемы.
|
|
03.07.2009, 16:24
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Я так и не понял, почему заменять методы в prototype конструкторов - плохо. Вроде это стандартная практика.
|
|
03.07.2009, 16:26
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Kolyaj, да какая разница "Array" или "RegExp"; по стандарту, host-объекты могут иметь в качестве [[Class]] любое значение, включая, используемые стандартными объектами ECMA (я, кстати, подправил коммент, где "Array" написал).
|
|
03.07.2009, 16:28
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от Riim
|
Я так и не понял, почему заменять методы в prototype конструкторов - плохо. Вроде это стандартная практика.
|
Пока нельзя выставлять {DontEnum} свойствам, плохо (с практической точки зрения) добавлять свойства в Object.prototype, в остальных случаях - если идеология позволяет - почему нет?
|
|
03.07.2009, 16:35
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Dmitry A. Soshnikov
|
добавлять свойства в Object.prototype
|
Да, кстати даже при замене (не добавлении) в for-in попадает.
|
|
|
|