0

私は次のことを試みています:

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

ありがとう!

4

3 に答える 3

1

拡張する最初のパラメータは、Class1 を拡張して Class2 のプロパティを含めるターゲットにする必要があります。したがって、代わりに次のことを行う必要があります。

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

本当にディープ コピーを実行するつもりでない限り、その場合は最初のパラメーターを true にし、次にターゲット、その後にクラスを指定する必要があります。

jQuery.extend(true, c, Class1, Class2);
于 2010-04-02T23:42:40.327 に答える
0

必要なのはこれだけです。今Class1、のプロパティで拡張されている必要がありますClass2

jQuery.extend(Class1, Class2);

jQuery.extendのドキュメントを確認してください

于 2010-04-03T08:05:36.363 に答える
0

私は使っている

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

そして、IE8でしか見つからないメソッドの同じ問題があります。Firefox 3.6 は Opera 10 と同じように優れています。

何よりも、エラーに一貫性がありません。ページを更新すると、問題が再び発生する場合と発生しない場合があります。

私の場合、スクリプトのロード方法に関連している可能性があると思います。しかし、それでも....IEが問題を引き起こしています...再び。

于 2010-09-29T15:03:00.203 に答える