SORU
25 HAZİRAN 2012, PAZARTESİ


JavaScript jQuery eşdeğer'In uzatma yöntemi

Olası Çoğalt:
How can I merge properties of two JavaScript objects dynamically?

Arka plan

Bağımsız değişken olarak config bir nesne alır bir işlevi var. İşlev içinde, ben de default nesne var. Bu nesnelerin her biri aslında işlevi içinde kalan kodu ayarları gibi özellikleri içerir. Önlemek için olması belirtin tüm ayarlarını içinde config nesne, kullandığım bir WordPress kullanmak extend yöntem doldurmak için yeni bir obje, settings varsayılan değerler default nesne değillerdi belirtilen config nesne:

var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};

var settings = $.extend(default, config);

//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};

Sorun

Bu harika çalışıyor, ama işlevselliği bir WordPress kullanmak için gerek kalmadan bunu çoğaltmak istiyorum. Orada düz ol' javascript ile mi? bunu yapmak için eşit derecede zarif (veya yakın) bir araçtır


Edit: Olmayan-Yinelenen Bir Gerekçe

Bir yinelenen bu soru "How can I merge properties of two JavaScript objects dynamically?" soru. Oysa bu soruyu sadece istiyor oluşturmak için bir nesne içeren tüm anahtarları ve değerleri iki ayrı nesneler - özellikle istediğiniz adresi nasıl bu olay bu iki nesne payı biraz ama tüm anahtarları ve nesne olsun önceliği (varsayılan) için oluşturulan nesne olay orada yinelenen anahtarlar. Ve daha da özel olarak, DV yöntemi kullanmak için bu adresi elde etmek ve alternatif bir şekilde jQuery olmadan bulmak istedim. Hem soruların cevapları birçok çakışma olsa da, o soruları kendileri aynı olduğu anlamına gelmez.

CEVAP
25 HAZİRAN 2012, PAZARTESİ


Kodunuzda sonucu elde etmek için.

function extend(a, b){
    for(var key in b)
        if(b.hasOwnProperty(key))
            a[key] = b[key];
    return a;
}

Varsayılan değiştirir orada uzatmak eskisi gibi nesne unutmayın. Eğer bunu istemezsin varsa, kullanın

$.extend({}, default, config)

JQuery işlevselliğini taklit daha sağlam bir çözüm aşağıdaki gibi olur:

function extend(){
    for(var i=1; i<arguments.length; i  )
        for(var key in arguments[i])
            if(arguments[i].hasOwnProperty(key))
                arguments[0][key] = arguments[i][key];
    return arguments[0];
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011