У меня есть некоторые функции прототипа, добавленные к Object
, которые, на мой взгляд, практичны в определенных сценариях. Тем не менее, я заметил, что когда я выполнил $ .get, функции прототипа обрабатываются как элементы данных и отправляются как http://...?prototypefunc=false
.
Это бесполезно, поскольку я не предоставляю их в качестве элементов данных, но они : добавлены в строку запроса.
Чтобы быть точным, у меня есть этот код:
Object.prototype.in = function() {
for(var i=0; i<arguments.length; i++)
if(arguments[i] == this) return true;
return false;
}
$.get('http://localhost/test.php', {'test': 'foo'}, function(text) { });
Соответствующий URL Построенное:
http://localhost/test.php?test=foo&in=false
Как я могу избежать этого?
И вот почему не следует расширять 'Object.prototype'. –
Почему бы и нет? Он настолько полезен, например, 'foo.in (1,2,3)', чтобы проверить, равно ли foo 1, 2 или 3. – pimvdb
@pimvdb: потому что это может иметь побочные эффекты (как вы можете видеть). Не так уж много кода имеет «Helper.in» (это [1,2,3]) ». В противном случае единственным способом исправить вашу проблему будет редактирование кода jQuery. –