내가 이렇게 보이는 물체가 구조적으로 동일 함에도 불구하고 다른 시나리오에서 사용됨). (someFoo
및 someBar
이 유사하다는 사실을 무시!)자바 스크립트 DRY 개체 생성자
방법이 있나요 내가 할 수있는 추상적 인 생성자 함수, 내가, 말, _bazCon
를 작성해야하는 경우, 나 자신을 반복 할 필요가 없습니다; 또는 버그가있는 경우 모든 생성자 정의를 수정하지 않아도됩니까?
나는 다음과 같이 공장 회원을 시도 :
_factory: function(type, f) {
if (typeof f != 'function') throw new TypeError('Bad ' + type);
this.fn = f;
}
... 다음 :
_fooCon: function(f) { return new this._factory('Foo', f); }
을하더라도이, 나는 작동하지 않을 것 볼 수 있습니다 노력없이! 내가 찾는 것을 달성하는 방법에 대한 아이디어가 있습니까? 그들을 구별 다른 행동이 있다면
var myObj = {
_factory: function(err) {
return function(f) {
if (typeof f != 'function') throw new TypeError('Bad ' + err);
this.fn = f;
};
},
someFoo: function(v) {
return new this._fooCon(function(x) {
return x + ' Foo ' + v;
});
},
someBar: function(v) {
return new this._barCon(function(x) {
return x + ' Bar ' + v;
});
}
};
myObj._fooCon = myObj._factory("Foo");
myObj._barCon = myObj._factory("Bar");
, 다음 _factory
생성자 내에서 호출되는 함수의 인자를받을 수 : 당신의 기능은 정말 같은 일을 할 경우
'instanceof'를 사용하지 않고 대신 다형성을 사용하도록 코드를 설계하는 것이 더 나을 것입니다. 따라서 객체에 이미 해당 유형에 맞는 메소드가 포함되어 있으며 런타임 검사가 필요하지 않습니다. 예 : 객체 생성시 올바른 유형의 메소드를 사용하여 올바른 유형의 객체를 생성하십시오. – jfriend00
명시 적으로 함수를 전송 한 다음 함수를 확인하면 첫 번째 예가 명확하지 않습니다. 즉, 검사는 불필요한 것처럼 보입니다 ... 그것은'// x = 3; // if (x === 3);' –