2013-08-22 9 views
1

Google style guide에 따르면 메서드는 생성자의 프로토 타입에 정의되어야하며 속성은 this 키워드를 사용하여 생성자에 정의되어야합니다.녹아웃을 사용할 때 속성 정의가 속성 정의입니다

대부분의 프론트 엔드 개발은 Knockout을 사용합니다. Knockout은 속성을 함수로 바꾸어서 관찰 속성을 처리합니다. 즉, 이제는 모든 속성이 더 많이 또는 더 적은 메서드가되었습니다. 이것은 중요한 실적에 영향을 미칩니 까? JavaScript getters and setters을 사용하여 녹아웃 조치가 있습니까?

답변

1

그래서 처음에는 getter와 setter를 사용하는 녹아웃 용 플러그인이 있지만 최신 브라우저에서만 작동합니다. IE8 <과의 호환성을 희생합니다 (불가피한 이유는 이러한 브라우저가 자바 스크립트 getters/setter를 지원하지 않기 때문입니다). The plugin can be found here.

주요 내용 : 스타일 가이드 의도를 이해하는 것이 중요합니다. 메서드는 일반적으로 재사용 가능이므로 프로토 타입에 넣으면 코드와 메모리 할당이 중복되지 않습니다. 이것이 프로토 타입에 두는 것이 좋습니다. 그러나, 녹아웃 관측은 재사용이 불가능합니다입니다. 그것들은 프로퍼티와 같이 동작합니다 : 인스턴스에 특정한 정보를 저장합니다. 이 차이는 중요합니다. 일 수 있지만 속성 인처럼 처리됩니다.

Google 스타일 가이드는이 시나리오를 다루지 않습니다. 이 작동하지 않는 시나리오와 비교하기 때문에 인스턴스에 배치하는 것이 성능 저하가되지 않습니다.. 관찰 가능한 것들을 원형에 놓으면 모델이 깨질 것입니다. 작동하는 유일한 방법은 성능 저하가 아닙니다.

마지막으로 getters와 setters 플러그인은 함수를 사라지지 않게하고 getter와 setter 뒤에 숨 깁니다. 동일한 작업을 수행해야하기 때문에 성능이 향상되지 않습니다.

+0

녹아웃을 모르지만 함수 인스턴스가 정확히 무엇이 종속적입니까? 데이터가 객체에 저장되면 각 객체에 대해 별도로 함수를 작성할 필요가 없습니다. – Esailija

+0

함수는 인스턴스 데이터를 닫아야하고 구독자에게 변경 사항을 알릴 수 있도록 읽고 쓸 수 있어야합니다. 이 함수에는 게시해야하는 구독자 목록 (예 : 액세스 할 수 없음)뿐만 아니라 관찰 가능 항목을 읽음으로써 구독자가 구독을 설정할 수 있도록 계산 된 것처럼 읽는 사람에게 알리는 것과 같이 인스턴스 depedendant가 있습니다. – Tyrsius

+0

사실 그것은 단지 녹아웃 특질이며 실제 제한이 아닙니다. http://jsfiddle.net/Y6Dds/ (예, 어떤 사람들은 문자열을 어색하다고 생각할 수도 있지만 Ember는 그냥 괜찮아졌습니다) – Esailija