이 질문의 제목을 지정하는 방법은 확실하지 않지만 생성자와 함께 공개 모듈 패턴을 사용하고 있으며 혼란스러워하는 행동을 발견했습니다. 이 코드의 실제 목적은 내 질문과 관련이 없으며, 내가 본이 동작을 이해하고 싶습니다. 이제 전화이 함수 정의의 동작을 이해하려고 시도합니다.
var ajaxModule = (function() {
//private
var data,callBack,type,dataType,url,
//public
constructor;
constructor = function(callBack,data,type,dataType,url) {
//Required
callBack = callBack || null;
data = data || null;
//Defaults
type = type || 'POST';
dataType = dataType || 'json';
url = url || 'DBConnect.php';
};
//methods
function setAjaxQuery() {
log('in setAjaxQuery')
dir(callBack);
dir(data);
dir(type);
dir(dataType);
dir(url);
};
constructor.prototype = {
constructor: ajaxModule,
setAjaxQuery: setAjaxQuery,
};
return constructor;
}());
:
이var ajax = new ajaxModule('someObject','someData');
ajax.setAjaxQuery();
지금은) 내가 그 console.dir (모두를위한 정의되지 않은보고 있었다이 일에 명령을 여기
내가 문제를 가지고 코드입니다 setAjaxQuery 함수.문제는 매개 변수 이름이 로컬 변수와 동일하다는 것입니다. 나는 이런 식으로 문제를 해결했다 :
constructor = function(zcallBack,zdata,ztype,zdataType,zurl) {
//Required
callBack = zcallBack || null;
data = zdata || null;
//Defaults
type = ztype || 'POST';
dataType = zdataType || 'json';
url = zurl || 'DBConnect.php';
}
나의 질문은 왜 그런가? 이름이 같은 경우 JavaScript가이 문제를 일으키는 이유는 무엇입니까?
'dir'은 아마도'console.dir'로 작성되어야합니다. 그 문제에 대해서'log'와 동일합니다. – Robbert