OOP
10055 ワード
まずエンクロージャを見てみましょう.次の文章はもっと分かりやすいです.
TDDでは、以下の方法がよく用いられる.
モジュールモード
値段を隠すのに使います.
カスタムタイプアレイ
モジュール+カスタムモード
メモリを有効に使用し、値を非表示にすることができます.
TDDでは、以下の方法がよく用いられる.
モジュールモード
function Person() {
let age = 35;
return {
getAge: () => {
return age;
},
setAge: (data) => {
age = data;
},
};
}
ageはキャビネットスペースにあり、内側に折りたたむしかありませんが、中にはアクセスできます.getAgeとsetAgeを使用してageにアクセスしています.(モジュール)値段を隠すのに使います.
カスタムタイプアレイ
function PersonType() {
this.age = 35;
}
PersonType.prototype.getAge = function () {
return this.age + 1;
};
const instancePerson = new PersonType();
//this.age에 접근이 가능하다. (은닉되지 않음)
console.log(instancePerson.age);
console.log(instancePerson.getAge());
//이렇게 하는것과 사용자 정의 타입 패턴은 어떤 차이가 있을까?
//사용자 정의 타입 패턴은 재사용이 가능하다. (메모리 효율적)
// const instancePerson1 = new PersonType();
// const instancePerson2 = new PersonType();
// const instancePerson3 = new PersonType();
let person2 = { age: 35 };
console.log(person2.age);
インスタンスの作成に使用する関数.newキーワードを使用して、コンストラクション関数の関数またはprototypeとして宣言された関数を宣言します.これにより、関数を構築するために使用されるthisはインスタンスを指します.値段は隠さない.モジュール+カスタムモード
function PersonType2() {
let age = 25;
function innerPersonType() {}
innerPersonType.prototype.getAge = function () {
return age;
};
return innerPersonType;
}
const Person3 = PersonType2();
const person3 = new Person3();
console.log(person3.getAge());
innerPersonType
関数は、age
に近づくことができるCloser関数である.ダイヤルバックinnerPersonType
は、上記のように使用できます.メモリを有効に使用し、値を非表示にすることができます.
// IIFE 패턴으로 만들어보기
const PersonType3 = (function () {
let age = 25;
function innerPersonType() {}
innerPersonType.prototype.getAge = function () {
return age;
};
return innerPersonType;
})();
const personType3 = new PersonType3();
console.log(personType3.getAge());
インスタント実行関数にすることもできます.Reference
この問題について(OOP), 我々は、より多くの情報をここで見つけました https://velog.io/@leehyunho2001/OOPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol