객체 지향 언어를 배운 JavaScript 사용자는 다음과 같은 클래스와 정의된 일련의 메서드를 사용했을 수도 있습니다. 초보자들이 js를 배우다 보면 이런 문장을 자주 봤습니다. 즉, JavaScript는 객체지향 언어인데, 아무리 배워도 객체지향 프로그래밍에 대해 잘 모르는 저 역시 마찬가지입니다. js 객체 지향 프로그래밍에 어려움을 겪기 시작했습니다. 지난 며칠 동안 js 클래스에 대한 이해에 대해 이야기해 보겠습니다. . .
1. 간단한 클래스
var Person = function(name, age){ this.name = name; this.age = age; this.sayName = function(){ console.log(this.name); }; }
var Person = function(name, age){ //共有属性 this.name = name; this.age = age; //共有方法 this.sayName = function(){ console.log(this.name); }; }
객체 생성
위의 예를 바탕으로 이를 개선할 수 있습니다.var Person = function(name, age){ //共有属性 this.name = name; //共有方法 this.sayName = function(){ console.log(this.name); }; //静态私有属性(只能用于内部调用) var home = "China"; //静态私有方法(只能用于内部调用) function sayHome(){ console.log(home); } //构造器 this.setAge = function(age){ console.log(age + 12); }; this.setAge(age); }//静态方法(只能被类来访问)Person.sayAge = function(){ console.log("your age is 12"); }//静态属性(只能被类来访问)Person.drink = "water";//静态共有方法(类和实例都可以访问)Person.prototype.sayWord = function(){ console.log("ys is a boy"); }
3. js 클래스 캡슐화
여기에서는 클로저를 사용하여 구현합니다. 먼저 클로저의 개념을 설명합니다.구현은 다음과 같습니다.
var Person = (function(){ //静态私有属性方法 var home = "China"; function sayHome(name){ console.log(name + "'s home in " + home); } //构造函数 function _person(name, age){ var _this = this; //构造函数安全模式,避免创建时候丢掉new关键字 if(_this instanceof _person){ //共有属性, 方法 _this.name = name; _this.getHome = function(){ //内部访问私有属性,方法 sayHome(_this.name); }; _this.test = sayHome; //用于测试 //构造器 _this.setAge = function(age){ _this.age = age + 12; }(age); }else{ return new _person(name, age); } } //静态共有属性方法 _person.prototype = { constructor: _person, drink: "water", sayWord: function(){ console.log("ys is a boy"); } } return _person; })();
var p1 = new Person("ys", 12); p1.getHome(); //ys's home in China console.log(p1.age); //24 var p2 = Person("ys", 12); p2.getHome(); //ys's home in China console.log(p2.age); //24 console.log(p2.test == p1.test); //true, 证明静态私有变量共享性
2. 일부 공개 속성 메소드는 내부 프로그램 처리 중에만 공유되기를 원하며 이를 정적 비공개 속성 메소드로 설정합니다.
3. 일부 공개 속성 메소드는 인스턴스 객체 간에 공유되기를 원하며 프로토타입 속성 메소드입니다.
위 내용이 이 글의 전부입니다. 잘 모르시는 분들도 직접 구현해 보시면 익히기 쉬우실 거에요! 관련 추천 :
JavaScript encapsulation의 다양한 작성 방법
위 내용은 JavaScript를 사용하여 클래스 캡슐화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!