>  기사  >  웹 프론트엔드  >  javascript_js 객체지향으로 클래스를 작성하는 방법 중 하나

javascript_js 객체지향으로 클래스를 작성하는 방법 중 하나

WBOY
WBOY원래의
2016-05-16 18:50:37960검색

EMCA262 사양에는 클래스 개념이 없습니다. js의 새로운 기능은 단지 C 및 Java와 비슷하게 보이게 만듭니다. 여기에 언급된 쓰기 클래스는 단지 js 코드 스타일을 작성하는 것입니다.
1. 생성자 방식

코드 복사 코드는 다음과 같습니다.

/* *
* Person 클래스: 사람을 정의하고 속성 이름과 getName 메소드를 가집니다.
* @param {String} name
*/
function 사람(이름) {
this.name = name;
this.getName = function() {
return this.name; }


객체를 구성하려면 일부 매개변수를 구성해야 하고 매개변수를 클래스에서 이에 할당해야 하기 때문에 이 스타일은 Java를 작성한 우리에게는 다소 익숙합니다. 그러나 Java와의 차이점은 JS가 클래스를 정의하기 위해 함수를 사용하고 매개변수는 유형을 정의할 필요가 없다는 것입니다.

클래스가 작성되었습니다. 몇 가지 개체를 만들어 보겠습니다.


var p1 = new Person("Jack");
var p2 = new Person("Tom")
console.log(p1 instanceof Person);//true
console.log(p2 instanceof Person);//true


또한 콘솔 출력은 p1과 p2가 실제로 Person 클래스의 객체 인스턴스임을 증명합니다.

이 방법의 장점은 매개변수에 따라 서로 다른 객체 인스턴스를 생성할 수 있다는 것입니다. 단점은 각 인스턴스 객체가 생성 중에 getName 메소드 버전을 생성하여 메모리가 낭비된다는 것입니다.

물론 숙련된 프로그래머는 외부 함수를 사용하여 클래스 메소드를 대체하므로 각 객체가 동일한 메소드를 공유합니다. 다시 작성한 클래스는 다음과 같습니다.


// 외부 함수
function getName() {
return this.name;
}

function Person(name) {
this.name =
this.getName = getName;// 여기 주목하세요
}


ㅋㅋㅋ 어떤 분들은 코드 스타일이 자바만큼 컴팩트하지 않다고 생각하실 수도 있어요. 그러나 실제로 메모리 소비를 줄일 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.