programing tip

새로운 Backbone.Model () 대 Backbone.Model.extend ()

itbloger 2020. 12. 5. 09:23
반응형

새로운 Backbone.Model () 대 Backbone.Model.extend ()


저는 JS 및 Backbone을 처음 사용합니다.

이 둘의 차이점은 무엇입니까?

TestModel = new Backbone.Model({ title: "test title" })
TestModel = Backbone.Model.extend({ title: "test title" })

간단히 말해서 "집의 프로젝트와 집 자체의 차이"로 설명 할 수있는 기본적인 차이점이 있습니다.

전문 프로그래머의 경우 "new Backbone.Model"은 개체 인스턴스를 반환하지만 "Backbone.Model.extend"는 생성자 함수를 반환한다고 말합니다.

FIRST : 새 개체 (예 : 집)

var TestModel = new Backbone.Model({ title: "test title" });

구조 (메서드 및 변수)가 다른 곳에서 정의 된 새 개체를 만듭니다. 객체는 언어의 "모든 비 기본 항목"으로 간주 될 수 있습니다. 여기서 "기본 항목"은 정수, 문자 등과 같은 기본 유형을 의미합니다.

중괄호 {}에서 일부 변수 또는 메서드의 값을 전달합니다. Tomasz Nurkiewicz가 이전에 설명했듯이 생성자라고합니다. 모델이 다른 곳에서 설명 된 새 객체를 '구성'할 수 있기 때문입니다.

알려진 예를 들자면 :

var myArray = new Array();

이는 다른 곳에서 정의 된 비원시 객체 인 새 Array를 만들고 있음을 의미합니다. 다음과 같이 작성할 수도 있습니다.

var myArray = new Array([1,2,3,4,5]);

그리고 주어진 숫자로 배열을 채 웁니다.

두 번째 : 기존 개체의 정의를 수정합니다 (예 : 집의 프로젝트).

var TestModel = Backbone.Model.extend({ title: "test title" })

VM에 매우 간단한 것을 말합니다. "기본으로 제공하는 객체는 매우 좋지만 더 많은 기능 / 속성을 구현하고 싶습니다." 따라서 "extend"절을 사용하여 기존 메서드 / 속성을 추가하거나 재정의하는 개체의 정의를 수정합니다.

예 : backbone.js 의 좋은 예 는 컬렉션의 비교 기능에 의해 제공됩니다. 정의하는 개체를 확장하면 "정렬 된 순서로 컬렉션을 유지하는 데 사용됩니다".

예:

myCollection = Backbone.Collection.extend({
    comparator:function(){
        return item.get('name');
    }
});

일반적으로

'backboning'(backbone.js 프레임 워크를 사용하여 개발) 할 때해야 할 일은 다음을 사용하여 주어진 객체 (예 : View)를 확장하는 것입니다.

window.ButtonView = Backbone.View.extend({
    btnText:'nothingByDefault',
    myNewMethod:function(){
       //do whatever you want, maybe do something triggered by an event, for instance
    }
});

그런 다음 코드의 다른 곳에서 사용합니다. 처리하려는 각 버튼에 대해 한 번씩 객체에 제공 할 모든 값을 중괄호 안에 포함합니다.

[...]
var submitBtn = new ButtonView({btnText:"SubmitMe!"}),
var cancelBtn = new ButtonView({btnText:"Erase All!"});

....도움이 되었기를 바랍니다...


두 번째 경우 TestModel는 나중에 여러 번 사용하여 모델의 인스턴스를 만들 수있는 생성자입니다.

var model = new TestModel();

그러나 통과 titleextend다른 의미를가집니다. 다음을 사용해야합니다.

var TestModel = Backbone.Model.extend({defaults: { title: "test title" }});

또는 객체를 만들 때 모델 속성을 전달합니다.

var model = new TestModel({ title: "test title" });

반면에 첫 번째 경우 TestModel는 이미 모델의 인스턴스입니다 (따라서 testModelJavaScript 명명 규칙을 따르도록 이름 을 지정 해야합니다 ).

var testModel = new Backbone.Model({ title: "test title" })

참고 URL : https://stackoverflow.com/questions/9093209/new-backbone-model-vs-backbone-model-extend

반응형