미니멀리스트 접근 방식 네덜란드 프로그래머 Gabor de Mooij는 Object.create()보다 나은 새로운 방법을 제안했습니다. 그는 이 방법을 "미니멀리스트 접근 방식"이라고 불렀습니다. 제가 추천하는 방법이기도 합니다.
3.1 Encapsulation
이 방법은 이것과 프로토타입을 사용하지 않고, 코드 전개도 매우 간단해서 "미니멀리스트 방법"이라고 불리는 것 같습니다.
우선 "클래스"를 시뮬레이션하기 위해 객체를 사용하기도 합니다. 이 클래스에서 생성자 createNew()를 정의하여 인스턴스를 생성합니다.
var Cat = {
createNew: function () {
// 여기에 일부 코드
}
}
그런 다음 createNew()에서 인스턴스 객체를 정의하고 이 인스턴스 객체를 반환 값으로 사용합니다. .
var Cat = {
createNew: function () {
var cat = {};
cat.name = "큰 고양이";
cat.makeSound = function (){ 경고 ("야옹야옹")
return cat;
}
};
사용 시 createNew() 메소드를 호출하여 인스턴스 객체를 가져옵니다.
var cat1 = Cat.createNew();
cat1.makeSound (); // Meow Meow Meow
이 방법의 장점은 이해하기 쉽고, 명확하고 우아한 구조를 가지며, 전통적인 "객체"에 부합한다는 것입니다. 프로그래밍 지향' 구조로 되어 있어 쉽게 배포할 수 있습니다. 아래 특징이 있습니다.
3.2 상속
한 클래스가 다른 클래스를 상속받도록 하는 것은 매우 편리합니다. 전자의 createNew() 메소드에서 후자의 createNew() 메소드를 호출하면 됩니다.
먼저 Animal 클래스를 정의합니다.
var Animal = {
createNew: function () {
var 동물 = {};
animal.sleep = function (){ 경고 ("잠들기") }
return 동물; 🎜>
그런 다음 Cat의 createNew() 메서드에서 Animal의 createNew() 메서드를 호출합니다.
createNew: function () {
var cat = Animal.createNew ();
cat.name = "큰소리";
cat.makeSound = function (){ 경고 ("야옹"); >return cat;
}
};
이렇게 얻은 Cat 인스턴스는 Cat 클래스와 Animal 클래스를 모두 상속받습니다.
코드 복사
코드는 다음과 같습니다. var cat1 = Cat.createNew(); cat1.sleep(); // Sleeping in
3.3 Private 속성과 Private 메소드
createNew() 메소드에서는 cat 객체에 정의되어 있지 않습니다. 메서드와 속성은 비공개입니다.
코드 복사
var cat = {};
var sound = "야옹야옹";
cat.makeSound = function(){ 경고(소리) }; >}
};
위 예제의 내부 변수 sound는 외부에서 읽을 수 없으며 cat의 공용 메소드 makeSound()를 통해서만 읽을 수 있습니다.
코드 복사
3.4 데이터 공유
때로는 읽고 쓸 수 있는 모든 인스턴스 개체가 필요합니다. 동일한 내부 데이터. 이때 내부 데이터를 클래스 객체 내부와 createNew() 메소드 외부에 캡슐화하면 됩니다.
코드 복사 코드는 다음과 같습니다.
var Cat = {
sound : "야옹야옹",
createNew: function(){
var cat = {}
cat.makeSound = function(){ 경고 (Cat.sound) };
cat.changeSound = function (x)
return cat
그런 다음 두 개의 인스턴스 객체를 생성합니다.
var cat1 = Cat.createNew(); var cat2 = Cat.createNew();
cat1.makeSound() //야옹야옹
인스턴스 객체가 있는데, 공유 데이터가 수정되면 다른 인스턴스 객체도 영향을 받습니다.
cat2.changeSound("La La La" ); cat1.makeSound() // 라라라