2014-06-24 8 views
1

페이지 문서 이유 :소호 대시 _.pick()는

Lo-Dash documentation

말한다 :

_.pick (오브젝트 [콜백], [thisArg])

작성해 지정된 프로퍼티로 구성된 객체의 얕은 복제. 속성 이름은 개별 인수 또는 속성 이름의 배열로 지정할 수 있습니다. 콜백이 제공되면 콜백이 반환하는 속성을 선택하는 객체의 각 속성에 대해 실행됩니다. 콜백은 thisArg에 바인드되어 3 개의 인수로 불려갑니다. (값, 키, 객체).

테스트 할 때 나는 깊은 사본을 얻습니다. 원본 개체와이 메서드로 만든 개체 간에는 연결이 없습니다.

+0

그냥 시도하고 얕습니다 ... http://jsfiddle.net/4BHn6/ –

+0

죄송합니다. 내 문제는 미안합니다. 바이올린에서는 내 환경에서 얕은 사본처럼 작동합니다. 나는 혼란스러워 :/ – Sysrq147

+1

따라서 중첩 된 객체 또는 배열은 참조로 전달됩니다. 즉, 원본에 포함 된 것으로 보이지만 원본을 참조하기 만하면 실제 복사본이 아니기 때문에 복사본이 얕은 복사본으로 간주됩니다. –

답변

0
var obj = {x: 5}, 
    foo = {k1: obj, k2: {a: 0}}, 
    picked = _.pick(foo, 'k1'); // -> picked = { k1: {x: 5 } } 

picked.k1.x = 6; 
console.log(picked);    // { k1: { x: 6 } } 
console.log(obj);    // { x: 6 }