> 웹 프론트엔드 > JS 튜토리얼 > ## Knockout.js의 객체 리터럴과 함수: 어떤 뷰 모델 선언이 귀하에게 적합한가요?

## Knockout.js의 객체 리터럴과 함수: 어떤 뷰 모델 선언이 귀하에게 적합한가요?

Susan Sarandon
풀어 주다: 2024-10-26 13:30:31
원래의
505명이 탐색했습니다.

## Object Literals vs Functions in Knockout.js: Which View Model Declaration is Right for You?

객체 리터럴로 선언된 Knockout 뷰 모델과 함수의 차이점

Knockout.js에서 뷰 모델은 객체 리터럴 또는 함수로 선언될 수 있습니다. 기능. 두 접근 방식 모두 데이터와 논리를 뷰에 노출하는 목적을 제공하지만 고려해야 할 몇 가지 미묘한 차이점이 있습니다.

객체 리터럴 선언:

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

ko.applyBindings(viewModel );
로그인 후 복사
  • 간단하고 깔끔한 구문.
  • 데이터 속성은 즉시 뷰에 노출됩니다.
  • 계산된 속성은 viewModel에 직접 바인딩(예: viewModel.full())하거나 바인딩과 함께 사용해야 합니다.

함수 선언:

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

ko.applyBindings(new viewModel ());
로그인 후 복사

함수 사용의 장점:

  • 이 값에 대한 직접 액세스:
    함수는 생성 중인 인스턴스(this)에 대한 즉각적인 액세스를 제공하여 간결한 계산 속성 및 메서드 정의를 가능하게 합니다.

    var ViewModel = function(first, last) {
      this.full = ko.computed(function() {
        return this.first() + " " + this.last();
      }, this);
    };
    로그인 후 복사
  • 뷰 모델 생성 캡슐화:
    함수를 사용하면 단일 호출 내에서 뷰 모델 생성을 정의하여 모든 속성과 메소드가 올바르게 초기화되도록 할 수 있습니다.
  • 비공개 설정 self를 사용하는 변수:
    이것의 적절한 범위 지정에 문제가 발생하면 뷰 모델 인스턴스와 동일한 변수(self)를 설정하고 대신 이를 사용하여 올바른 컨텍스트를 유지할 수 있습니다.

    var ViewModel = function() {
      var self = this;
      this.items = ko.observableArray();
      this.removeItem = function(item) {
        self.items.remove(item);
      }
    };
    로그인 후 복사
  • bind를 사용하여 바인딩:
    최신 브라우저의 경우 바인딩 기능을 사용하여 특정 함수가 올바른 this 값으로 호출되도록 할 수 있습니다.

    var ViewModel = function() {
      this.items = ko.observableArray();
      this.removeItem = function(item) {
        this.items.remove(item);
      }.bind(this);
    };
    로그인 후 복사

사용할 접근 방식을 선택하는 것은 애플리케이션의 특정 요구 사항과 기본 설정에 따라 다릅니다. 함수 선언은 더 큰 유연성과 캡슐화를 제공하는 반면, 개인 변수나 계산된 속성이 필요하지 않은 기본 시나리오에서는 개체 리터럴 선언이 더 간단하고 편리합니다.

위 내용은 ## Knockout.js의 객체 리터럴과 함수: 어떤 뷰 모델 선언이 귀하에게 적합한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿