JavaScript의 유연성으로 인해 누구나 자신의 습관에 따라 코드를 작성할 수 있습니다. 함수형 프로그래밍 방법도 있고, 객체지향의 등장으로 인해 오늘날 널리 사용되는 객체 리터럴도 있습니다. 시작은 또한 점차적으로 클래스 프로그래밍으로 발전했습니다. 이제 몇 가지 친숙한 프로그래밍 습관에 대해 간략하게 설명하겠습니다.
1. 객체 리터럴:
var 사람 = {
이름:null,
setName:함수(이름){
this.name = 이름;
this.name을 반환합니다.
},
getName:함수(){
경고(this.name);
}
}
JavaScript 특성을 지닌 프로그래밍 메소드입니다. 클래스 단위로 setName 메소드와 getName 메소드를 포함합니다. 이 시점부터 person.setname('R') 메소드를 호출하는 것은 비교적 간단합니다. 개인의 속성과 메소드는 모두 비공개가 아니며 호출할 수 있습니다.
2.프로토타입 생성자 호출 모드
var 사람 = 함수(){
this.name = null;
}
Person.prototype.setName = 함수(이름){
this.name = 이름;
}
Person.prototype.getName = 함수(){
경고(this.name);
}
Person 클래스를 생성한 다음 프로토타입을 사용하여 클래스를 확장하고 메서드를 추가하는 것도 매우 일반적인 프로그래밍 방법입니다. 객체 리터럴과 가장 큰 차이점은 이 클래스의 메서드를 호출할 때 먼저 new를 사용해야 한다는 것입니다(Java와 유사). 호출 클래스) var p = new Person();p.getName(); new를 사용하지 않고 직접 생성하면 오류가 발생하며 이 오류는 오류의 원인을 찾기가 어렵습니다. 이는 Person.prototypel을 가리키는 데서 발생하며 Person에는 setName 메소드가 없습니다.
3. 함수형 프로그래밍에 익명 함수를 사용하세요
(기능(){
변수 이름;
var setName = 함수(n){
이름 = n;
}
창['사람']['setName'] = setName;
var getName = 함수(){
경고(이름);
}
window['person']['getName'] = getName;
})()
클래스 출현의 가장 큰 이점 중 하나는 전역 변수의 발생을 줄이는 것입니다. 그러나 여전히 함수형 프로그래밍에 익숙하다면 익명 함수를 만들고 클로저를 수행하는 한 문제가 되지 않습니다. 위에서 볼 수 있듯이 var 이름은 외부 변수를 사용하여 내부 함수나 변수를 호출할 수 있습니다. 개인 변수와 개인 메서드를 만듭니다.