5. 생성자 프로토타입을 사용하여 클래스를 정의합니다. 동일한 생성자로 여러 유형을 정의할 수 있습니다.
/**
* $define 클래스 작성 도구 함수 2
* @param {Object} 생성자
* @param {Object} 프로토타입
*/
function $define(constructor,prototype) {
var c = constructor || function(){}; = 프로토타입 | | {};
return function() {
for(var atr in p)
arguments.callee.prototype[atr]
c.apply(this ,arguments) ;
}
}
네 번째 방법과 유사하게 두 클래스는 여전히 생성자와 프로토타입 객체를 사용하여 정의됩니다.
//Constructor
function Person( name) {
this.name = name;
}
//Prototype 객체
var proto = {
getName : function(){return this.name},
setName : function( name){this.name = name;}
}
//두 개의 클래스 정의
var Man = $define(Person,proto)
var Woman = $define(Person,proto ) ;
console.log(Man == Woman); //false, 동일한 생성자(Person)가 다른 클래스를 정의함