6. Prototype.js에서 클래스 작성 방법
//.js의 프로토타입 코드
var Class = {
create: function() {
return function() {
this.initialize.apply(this, 인수)
}
}
}
//단순화
function Clazz() {
return function(){
this.initialize.apply(this,arguments)
}
}
클래스를 다음과 같이 작성하고,
//클래스 이름 Person
var Person = Class.create()
//프로토타입 재작성을 통해 Person 정의
Person.prototype = {
초기화: 함수(이름) {
this.name = 이름;
},
getName: function() {
return this.name;
},
setName: 함수 (이름) {
this.name = 이름;
}
}
//객체 생성
var p = new Person("jack"); log(p. constructor == Person);//false
initialize는 객체의 초기화를 완료합니다(생성자와 동일). 메서드를 순서대로 작성하면 됩니다.
p.constructor == Person is false라는 문장을 보면 문제가 있습니다. 그 이유는 Person의 프로토타입이 다시 작성되었기 때문입니다. 생성자가 올바른 생성자를 가리키도록 하려면 프로토타입을 다시 작성할 때 생성자 속성만 유지하면 됩니다.
Person.prototype = {
constructor : Person, //참고
initialize : function(name) {
this.name = name
},
getName : function() {
return this.name; >},
setName : function(name) {
this.name = name;
}
}
자, 이제 p.constructor == Person이 true입니다. .