2013-09-24 3 views
0

안녕하세요, 저는이 질문이 여러 번 요청되었지만 너무 많은 의견과 주장이 있다는 것을 압니다. 나는 답을 검증 할 수있는 최고의 경험이 없으므로 내가 찾는 것을 설명하고 아마도 올바른 방향으로 나를 가리킬 수있을 것이다. 나는 몇 가지 방법으로 객체를 생성 한 내 응용 프로그램에서 자바 스크립트 객체와 속성 확장하기

, 그들 대부분은과 같이 미리 정의 된 기본 값 세트를 가지고 :

module.exports = { 

    submit: function(options) { 

     var defaults = { 
      _id: 1453, 
      text: 'Some text', 
      dataObj:{ 
       links: 3532, 
       arr: ['James','Paul','Lina'], 
      }, 
      dims:{ 
       width: getClientWidth(), 
       height: getClientHeight() 
      } 
     } 

     options.extend(defaults); 

     return sendData(defaults); 

    } 

    // other similar methods - functions 

}; 

을 내가 속성과 특성을 확장하는에 관심이 있어요 기본 로컬 변수 중 하나. 보시다시피 기본값은 복잡한 구조화 된 객체입니다. 옵션 구조는 훨씬 더 복잡 할 수 있습니다. 따라서 내가 잘못하지 않는다면 간단한 얕은 병합/복사가 이상적이지 않을 수도 있습니다. 당신이 상상할 수있는

사용법 :

var app = { 
    // stuff 
} 

app.fn = require('common/lib.js'); 

app.initialize(function(){ 
    var settings = { 
     // hell here 
    } 
    app.fn.submit(settings) 
}) 

은 사전에 감사합니다.

추신. 어떤 라이브러리도 사용되지 않고 어떤 식 으로든 extend() 함수의 순수한 자바 스크립트 구현에 관심이 있습니다.

+0

당신이 NodeJS를 사용하거나 브라우저에서 실행중인 : options = extend(true, defaults, options);

설정 객체는이 제대로 기본값의 상단에 병합됩니다 다음과 같을 수 있을까? 어쨌든'options.extend (true, defaults);''deep copy '플래그를 설정하십시오. 편집 : 적어도 여러 권의 라이브러리에 필요합니다. 귀하의 확장 기능이 어디서 오는지 확실하지 않습니다. – Hless

+0

나는이 라이브러리를 사용하지 않는다. 이것은 appcelerator 프로젝트이다. 나는 일하고 있는데, 나는 순수한 자바 스크립트 솔루션을 찾고있다. – Syd

답변

0

비슷한 질문은 여기에 질문 : 올바른 범위 내에서 사용할 수 있도록 deep extend (like jQuery's) for nodeJS

그냥, 프로젝트에 허용 대답에서 확장 기능을 복사합니다. 다음과 같이 사용 :

var settings = { 
    text: "Other text", 
    dataObj:{ 
    links: 3531 
    } 
};