2014-05-20 5 views
1

famo.us의 "Surface"또는 "View"클래스를 하위 클래스로 분류하는 몇 가지 예를 보았습니다. 여기에 하나의 간단한 예입니다 :famo.us : 하위 분류 표면

define(function(require, exports, module) { 
    var Surface = require('famous/core/Surface'); 
    var View = require('famous/core/View'); 

    function SettingsView() { 
     View.apply(this, arguments);  
     this.add(new Surface({ content: 'settings' })); 
    } 

    SettingsView.prototype = Object.create(View.prototype); 
    SettingsView.prototype.constructor = SettingsView; 

    SettingsView.DEFAULT_OPTIONS = {}; 

    module.exports = SettingsView; 
}); 

내가 3이에 대한 질문이 있습니다

  1. View.apply(this, arguments);의 목적은 무엇입니까? 이것은 "자바 스크립트"또는 "famo.us 것"입니까?
  2. 폭 및 높이 속성을 SettingsView .ctor에 전달하면 View .ctor에 전달할 수 있습니다. 그게 apply 메서드는 무엇입니까?
  3. SettingsView.DEFAULT_OPTIONS = {};의 의미는 무엇입니까?

답변

1

적용 대상 개체에 인수 배열을 적용합니다. ** MDN

간략한 설명은 apply (1) 값이 this이고 두 번째로 인수 배열을 기대한다는 것입니다. 당신은 당신의 예제에서 배열이 없다는 것을 알 수 있습니다. arguments을 사용하면 해당 함수의 모든 인수를 해당 응용 프로그램이 호출되는 객체에 전달할 수 있기 때문입니다. 이 경우, SettingsView()에 전달 된 인수 이후 당신이 SettingsView의 프로토 타입이 새로운 View을 만드는 데 사용되는 것을 볼거야 SettingsView 기능의 밀폐 View

외부에 적용되며, 우리는 생성자를 설정 SettingsView을 기본적으로 호출합니다. SettingsView()

루프가 어떻게 완료되는지보십시오. 따라서 SettingsView의 생성자 (예 : var mySettings = new SettingsView();)를 호출하면 생성자로 전달되는 모든 인수가보기의 생성자에 전달됩니다. 또한 Surface은 콘텐츠 옵션이 "설정"으로 미리 채워져 만들어집니다. 현실 세계에서는 버튼이나 이미지 또는 재사용 할 수있는 것이 될 수 있습니다.

View의 소스를 보면 View의 새 인스턴스를 만들 때 명시 적으로 명시하지 않은 경우 사용되는 다양한 속성을 가진 DEFAULT_OPTIONS 개체가 있습니다. 귀하의 예에서는 기본적으로 해당 객체의 내용을 지우는 것입니다. 일반적인 famo.us로 전달해야하는 것을 참조하십시오. 작성한보기가 필요한 모든 특성/옵션을 갖도록 문서에서보기.

크기 속성을보기로 전달할 때와 같이 작동하지 않습니다. think of a famo.us 다른 famo.us renderables (Surfaces)의 그룹화로보기 그러나 SettingsView 생성자에 변수를 전달한 다음 Settings 뷰 생성자에 포함 된 Surface의 너비와 높이 값을 설정하는 데 사용할 수 있습니다. 그것이 당신이 그것에 대해 어떻게 할 것인가입니다.

나는 이것에 관한 책을 확실히 얻을 것을 권합니다. Speaking Javascript은 "컴퓨터 프로그램이 무엇인가?" riff raff. 프로토 타입 등은 JS 앱을 제작하는 데 정말로 중요하며 famo.us를 사용할 때 프로세스가 자주 발생합니다.

이렇게하면 약간 더 편집해야 편집이 필요할 수 있습니다.

관련 문제