2011-10-18 2 views

답변

0

당신은 underscore.js을 사용할 수있는가 내장되어 extend 기능 :

_.extend(b, a); // merge a into b 

은 그럼 당신은 할 수 있습니다 :

b.afunc('hello'); 
1

열거 인쇄해야 예

var a = { 
    afunc: function(bla) { 
    alert('hello ' + bla); 
    }, 
    avalue: 'aaa' 
}; 

var b = { 
    bfunc: function(blb) { 
    alert('hi ' +blb); 
    }, 
    bvalue: 'bbb' 
}; 

magically_copy_a_to_b(a,b); 
b.afunc('world'); 

위한

후 (B)의 특성을 설정. 참고 : 객체는 참조로 전달되고 은 복사되지 않습니다.이 복사됩니다.

복사 :

  • 숫자, 문자열, 부울 -, 복사
  • 배열 : 사용 copiedArray = array.slice()를 배열을 array
  • 간단한 기능 복사 (범위를 참조하지 않는, 그런 당신의 예에서와 같이) :
    copiedFunc = eval(originalFunc.toString())

 

,
function magically_copy_a_to_b(a,b){ 
    for(var prop in a){ 
     /* Example: copying all string properties*/ 
     if(typeof prop[a] == "string"){ 
      b[prop] = prop[a]; 
     } 
    } 
} 
0

당신이 혼란을 많이 일으키고 있다고 생각합니다. 어쨌든 (var 및 사용 :) 객체를 수정하고 하나의 객체의 속성을 열거하고 다른 객체에 추가하여 작동합니다 (프로토 타입 체인을 피함).)

function magically_copy_a_to_b(org, dest){ 
    for (var prop in org){ 
     if (org.hasOwnProperty(prop)){ 
      dest[prop] = org[prop]; 
     } 
    } 
    return dest; 
} 
var a = { 
    afunc: function(bla) { 
    alert('hello ' + bla); 
    }, 
    avalue: 'aaa' 
}; 

var b = { 
    bfunc: function(blb) { 
    alert('hi ' +blb); 
    }, 
    bvalue: 'bbb' 
}; 

b = magically_copy_a_to_b(a,b); 


b.afunc('world'); 
0

이 메소드는 json 객체의 속성을 다른 객체에 영구적으로 추가합니다. JS는 스크립팅 언어이기 때문에 "eval"함수는 짧은 코드로 하루를 절약 할 수 있습니다! 마지막으로, "for (obj2의 var obj1)"은 obj1에 정의 된 모든 키를 반환하기 때문에 json을 사용하고 있으며 기본적으로 json을 간단한 배열보다 큰 코드로 처리하는 것이 더 재미 있습니다. 예를 들어, json 객체 배열을 정렬하는 것은 정말 쉽습니다. 뭔가를 얻기 위해 악 "i"를 사용할 필요는 없습니다.

function magically_copy_properties(jsonFrom,jsonTo) { 
    for (var key in jsonFrom) { 
     eval([ 
      "jsonTo.",key,"=jsonFrom.",key 
     ].join("")); 
    } 
} 

var a = { 
    "a1": function() { 
     return "hello"; 
    }, 
    "a2": function() { 
     return "hey"; 
    }, 
    "aSpace": function() { 
     return " "; 
    } 
} 

var b = { 
    "b1": function() { 
     return "ho"; 
    }, 
    "b2": function() { 
     return "world"; 
    } 
} 

magically_copy_properties(a,b); 
alert(b.a1() + b.aSpace() + b.b2()); 
관련 문제