2012-02-22 2 views
1

Я пытаюсь изменить плагин, и я потянув меня за волосы, пытаясь понять, как продлить() работает ...Как работает jquery extend() с несколькими объектами?

Если у меня есть это:

$.extend(plugin.ext.oStdClasses, { 
     "some":"one" 
     }, 
$.extend(plugin.ext.oStdClasses, plugin.ext.xtraClasses, { 
     "some":"two" 
     } 

может кто-нибудь объяснить мне, что происходит?

Кроме того, я хочу, чтобы расширить это с моей собственной логикой, как так:

$.extend(plugin.ext.xtraClasses, plugin.ext.moreClasses, { 
     "some":"thing", 
     "else":"too" 
     } 

Однако это, кажется, отдай мне пустой объект. Можно ли расширить стандартные классы с помощью классов xtra с большим количеством классов и перезаписать предыдущие классы?

Спасибо за некоторые указатели

ответ

1

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

var opts = {}; 
$.extend(opts, plugin.ext.xtraClasses, plugin.ext.moreClasses, { 
    some: "thing", 
    else: "too" 
}); 
console.log(opts); 
+0

так КЛЮЧ были бы мои основные классы, к которым Xtra и больше будут добавлены? – frequent

+0

thx for var opts = {}, ... объявить сначала, прежде чем задавать :-) – frequent

2

$ .extend, расширяющий первый переданный аргумент.

, например:

var first = {first: true}; 
var second = {second: true} 

$.extend(first, second); 

console.log(first); // output {first: true, second: true} 
console.log(second); // output {second: true} 

var third = $.extend({}, first, second, {third: true}); 
console.log(third); // output {first: true, second: true, third: true} 
+1

Что произойдет, если я опустил {} в var third? – frequent

+0

то же, что и в первом случае (первый объект тоже расширен) – komelgman

+0

http://api.jquery.com/jQuery.extend/ – komelgman

Смежные вопросы