2 개의 JavaScript 객체 클래스를 비교하고 싶습니다. 아래의 현재 호출이 실패합니다. 여기에서 전달 된 "from 및 to"변수를 사용하여 올바른 교차 속도를 추출하는 것이 좋습니다.2 개의 별도 JavaScript 객체 클래스 비교
도움 주셔서 감사합니다.
업데이트 :
instanceof
의 오른쪽 운영자가 constructor
속성을 통해 액세스 할 프로토 타입 객체 대신 객체의 생성자 함수, 안
<script type="text/javascript">
<!--
// ------------------------
// CLASS
function Currency(clientId, country, code, imageURL, name) {
this.clientId = clientId //EXAMPLE: txtBudget
this.country = country; //EXAMPLE: America
this.code = code; //EXAMPLE: USD
this.imageURL = imageURL; //EXAMPLE: "http://someplace/mySymbol.gif"
this.name = name; //EXAMPLE: Dollar
this.amount = parseFloat("0.00"); //EXAMPLE: 100
};
Currency.prototype.convertFrom = function (currency, factor) {
this.amount = currency.amount * factor;
}
// CLASS
function Pound(clientId, imageURL) {
Currency.call(this, clientId, "Greate Britain", "GBP", imageURL, "Pound");
};
Pound.prototype = new Currency();
Pound.prototype.constructor = Pound;
// CLASS
function Dollar(clientId, imageURL) {
Currency.call(this, clientId, "America", "USD", imageURL, "Dollar");
};
Dollar.prototype = new Currency();
Dollar.prototype.constructor = Dollar;
// CLASS
function Reais(clientId, imageURL) {
Currency.call(this, clientId, "Brazil", "BRL", imageURL, "Reais");
};
Reais.prototype = new Currency();
Reais.prototype.constructor = Reais;
// ------------------------
// CLASS
function Suscriber(element) {
this.element = element;
};
// CLASS
function Publisher() {
this.subscribers = new Array();
this.currencyCrossRates = new Array();
};
Publisher.prototype.findCrossRate = function (from, to) {
var crossRate = null;
for (var i = 0; i < this.currencyCrossRates.length; i++) {
if ((this.currencyCrossRates[i].from.constructor === from.constructor) && (this.currencyCrossRates[i].to.constructor === to.constructor))
crossRate = this.currencyCrossRates[i];
}
return crossRate;
}
// ------------------------
// CLASS
function CurrencyCrossRate(from, to, rate) {
this.from = from;
this.to = to;
this.rate = parseFloat(rate);
};
jQuery(document).ready(function() {
var dollar = new Dollar(null, null);
var reais = new Reais(null, null);
var dollarToReais = new CurrencyCrossRate(dollar, reais, 0.8);
var reaisToDollar = new CurrencyCrossRate(reais, dollar, 1.2);
publisher = new Publisher();
publisher.currencyCrossRates.push(dollarToReais);
publisher.currencyCrossRates.push(reaisToDollar);
// SETUP
jQuery(".currency").each(function() {
publisher.subscribers.push(new Suscriber(this));
});
var newDollar = new Dollar(null, null);
var newReais = new Reais(null, null);
// This now resolves correctly
var first = crossRate = publisher.findCrossRate(newDollar, newReais);
var second = crossRate = publisher.findCrossRate(newReais, newDollar);
var stop = "";
});
-->
</script>
instanceof가 작동해야합니다. 비교하면 무엇을 의미합니까? –
나는 crossRate.from 인스턴스를 전달 된 인스턴스와 비교하려고합니다. –
비교에서 프로토 타입을 생성자로 변경해보십시오. – Joe