0

저는 C++/Java 배경에서 왔지만이 자바 스크립트에서 올바른 구문을 가져 오는 데 문제가 있습니다. 이것이 내가 성취하려고 시도한 것입니다. Backbone.View에서 상속받은 기본 클래스 TemplateBaseView가 필요합니다. TemplateBaseView는 Backbone.View에서 초기화 및 렌더링 함수를 재정의합니다. 밑줄도 사용하고 있습니다 .js. 여기에 간단한 시도, 어떤 도움을 주시면 감사하겠습니다. 렌더링 기능과 지정된 템플릿 속성을 초기화 기본적으로 기본과 Backbone.View 객체를 생성 할자바 스크립트에서 기본 기본 클래스를 구현하려하지 않았습니다. 정확한지 확실하지 않습니다.

function TemplateBase(){} 
    TemplateBase.prototype.render = function(){ ... } 
    TemplateBase.prototype.initialize = function(){ ... } 
    _.extend(TemplateBase , Backbone.View); 

그리고 본질적으로 같은 것을 할 싶어

var HeaderView = TemplateBase({ template: _.template($("#header_template").html())}; 

.

어떤 도움이 필요합니까?

답변

1

내장 된 extend을 백본에서 사용하고 싶습니다.

var TemplateBase = Backbone.View.extend({ 
    'this': 'is', 
    'a': 'class' 
}); 

var HeaderView = new TemplateBase; 

몇 가지. TemplateBase를 '클래스'라고 할 수는 있지만 실제로는 자바 스크립트에서는 클래스 기반 언어에서 온 사람들에게 유용한 이름입니다. 그것은 기술적으로 프로토 타입입니다.

다음으로 TemplateBase의 인스턴스를 만들 때 new을 사용하십시오. 그렇지 않으면 함수를 호출하고 해당 프로토 타입의 인스턴스가 아닌 함수가 반환하는 객체로 설정하는 것입니다.

마지막으로, 대부분의 사람들은 '클래스'는 대문자로 표시하지만 인스턴스는 대문자로 사용하지 않습니다. 그래서 다시 질문을 읽고 나면 headerView

편집

HeaderView을 바꿀 수, 어쩌면 당신은 클래스로 HeaderView 줄까? 이 경우 :

var HeaderView = TemplateView.extend({ 
    template: _.template($("#header_template").html()) 
}); 

var headerInstance = new HeaderView; 
관련 문제