"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ## 녹아웃 뷰 모델: 객체 리터럴 또는 함수 – 어느 것이 귀하에게 적합합니까?

## 녹아웃 뷰 모델: 객체 리터럴 또는 함수 – 어느 것이 귀하에게 적합합니까?

2024년 11월 19일에 게시됨
검색:465

##  Knockout View Models: Object Literals or Functions – Which One is Right for You?

KO 뷰 모델: 객체 리터럴과 함수 비교

Knockout JS에서 뷰 모델은 객체 리터럴이나 함수를 사용하여 선언될 수 있습니다. 두 가지 모두의 주요 목적은 관찰 가능한 속성과 계산된 함수를 정의하는 것이지만, 이들 간의 주요 차이점은 캡슐화, 유연성 및 코드 구성에 영향을 미칩니다.

객체 리터럴:

var viewModel = {
    firstname: ko.observable("Bob")
};

객체 리터럴은 복잡한 논리나 계산된 기능이 없는 간단한 뷰 모델에 대해 간단하고 간결합니다. 그러나

  • 계산된 함수 내에서 미리 정의된 이 컨텍스트에 대한 액세스를 제공하지 않습니다.
  • 뷰 모델에 관찰 가능 항목과 계산된 함수가 많이 포함되어 있으면 관리하기 어려울 수 있습니다.

함수:

var viewModel = function() {
    this.firstname = ko.observable("Bob");
};

함수는 다음과 같은 여러 가지 장점을 제공합니다.

  • 캡슐화: 함수를 사용하면 단일 호출 내에서 뷰 모델 생성과 해당 속성이 캡슐화됩니다.
  • 계산된 함수의 이 컨텍스트: 이 컨텍스트는 뷰 모델 인스턴스에 자동으로 바인딩되어 계산된 함수 내의 해당 속성 및 메서드에 편리하게 액세스할 수 있습니다.
  • 유연성: 함수는 인수를 취할 수 있으며 외부 데이터 또는 기타 개체를 기반으로 뷰 모델을 초기화하는 데 사용할 수 있습니다.

모범 사례:

In 대부분의 경우 뷰 모델을 정의하는 함수를 사용하는 것이 좋습니다. 더 큰 캡슐화와 유연성을 제공하여 복잡한 뷰 모델을 더 쉽게 관리하고 이에 대한 적절한 액세스를 보장합니다.

개인 속성 및 메서드:

함수 기반 뷰 모델 자체 패턴을 사용하여 이 컨텍스트 내에서 개인 속성 및 메서드를 생성할 수 있습니다:

var ViewModel = function() {
    var self = this;
    self.privateProperty = ko.observable();
    self.privateMethod = function() {};
};

바인드 함수:

또는 최신 브라우저와 Knockout JS는 특정 this 컨텍스트에 함수를 명시적으로 바인딩하는 바인드 기능을 제공합니다:

var ViewModel = function() {
    this.items = ko.observableArray();
    this.removeItem = function(item) { this.items.remove(item); }.bind(this);
};

바인드 함수를 사용하면 중첩된 범위 내에서 함수를 호출할 때에도 이것이 뷰 모델 인스턴스를 참조하도록 보장됩니다.

결론:

객체 리터럴과 함수를 모두 사용하여 녹아웃 뷰 모델을 정의할 수 있지만 일반적으로 함수는 캡슐화, 유연성 및 계산된 함수에서의 효율적인 처리를 위해 선호됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3