Validator라는 함수를 정의하고 있습니다. 이 내에서 this.luhn을 다른 함수로 정의합니다. 이제 엔진 매개 변수가 Validator 함수에 전달되고 엔진 함수가 Validator 내부에 있으면이를 실행하고 싶습니다. 이 시점에서, Im은 "내 엔진 로그에"엔진을 찾을 수 없습니다. "라는 메시지가 나타납니다.함수 내부에서 함수를 정의하고 실행하면
코드 :
var Validator = (function(cardnumber, cardtype, engine){
this.cardnumber = cardnumber;
this.cards = {"mastercard":"51,52,53,54,55", "visa":"4"};
this.luhn = (function(cardnumber){
var len = cardnumber.length,
mul = 0,
prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]],
sum = 0;
while (len--) {
sum += prodArr[mul][parseInt(cardnumber.charAt(len), 10)];
mul ^= 1;
}
return sum % 10 === 0 && sum > 0;
});
if(typeof this.engine != "undefined"){
this.engine();
}
else {
console.log("Engine for method " + engine + " not found");
}
});
나는 그것을 시작하는 방법 :
var test = new Validator('4861224212948679', 'visa', 'luhn');
이 경우 누구의 luhn (또는 그 문제에 대한 모든 다른 기능) 렁 올바른 방향으로 날 지점 수 "this"안에 정의되어 있습니까? 대신
'이 [엔진 (에 cardNumber)'대신과 typeof this.engine의 (대해서 typeof 엔진 === "기능")! = "정의"를 사용한다 –
. "this"를 제거하십시오. 호출하기 전에 매개 변수가 아니라 "this"속성을 호출합니다. – Amitesh
또 다른 메모 : 카드 번호에서 항상 빼낼 수 있다면'cardtype '을 전달하는 이유는 무엇입니까?) – raina77ow