jQuery.extend не работает в Internet Explorer, но работает в Firefox - PullRequest
0 голосов
/ 03 апреля 2010

Я пытаюсь сделать следующее:

var Class1 = function() {}
Class1.prototype = {
    MyMethod: function() { /* Do Stuff */ }
}

var Class2 = function() {}
Class2.prototype = {
    AnotherMethod: function() { /* Do More Sweet Stuff */ }
}

jquery.extend(true, Class1, Class2);

Теперь я должен ожидать, что смогу сделать следующее:

var c = new Class1();
c.AnotherMethod();

В Firefox 3.6 это работает просто отлично. В Internet Explorer 7 и 8 написано «Объект не поддерживает это свойство или метод».

Я неправильно понимаю, как должен работать $ .extend, или IE ведет себя плохо?

jQuery Версия: 1.3.2

Спасибо!

Ответы [ 3 ]

1 голос
/ 03 апреля 2010

Первый параметр extension должен быть целью расширения Class1 для включения свойств Class2. Итак, вместо этого вы должны сделать:

var c;
jQuery.extend(c, Class1, Class2);

Если вы действительно не собирались делать глубокое копирование, в этом случае первый параметр должен быть истинным, а затем целевой, а затем классы:

jQuery.extend(true, c, Class1, Class2);
0 голосов
/ 29 сентября 2010

Я использую

Class2 = $.extend(true,{},Class1,Class2);

И у меня та же проблема метода, не найденного только в IE8. Firefox 3.6 отлично подходит для Opera 10.

Вдобавок ко всему, ошибка несовместима. Когда я обновляю страницу, у меня может возникнуть или нет проблема снова.

Я думаю, что в моем случае это может быть связано с тем, как загружается мой скрипт. Но все же .... IE вызывает проблемы ... снова.

0 голосов
/ 03 апреля 2010

Это все, что вам нужно. Теперь Class1 должен был быть расширен со свойствами Class2

jQuery.extend(Class1, Class2);

Проверка jQuery.extend документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...