먼저 다음 코드는 내 자신의 JavaScript 라이브러리입니다.개체의 복제본을 만들면 오류 메시지가 표시됩니다.
(function() {
var lib = {
elems: [],
getElem: function() {
var tmpElem = [];
for (var i = 0; i < arguments.length; i++)
tmpElem.push(document.getElementById(arguments[i]));
this.elems = tmpElem;
tmpElem = null;
return this;
},
html: function(txt) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].innerHTML = txt;
return this;
},
style: function(prob, val) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].style[prob] = val;
return this;
},
addEvent: function(event, callback) {
if (this.elems[0].addEventListener) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].addEventListener(event, callback, false);
} else if (this.elems[0].attachEvent) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].attachEvent('on' + event, callback);
}
return this;
},
toggle: function() {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].style.display = (this.elems[i].style.display === 'none' || '') ? 'block' : 'none';
return this;
},
domLoad: function(callback) {
var isLoaded = false;
var checkLoaded = setInterval(function() {
if (document.body && document.getElementById)
isLoaded = true;
}, 10);
var Loaded = setInterval(function() {
if (isLoaded) {
clearInterval(checkLoaded);
clearInterval(Loaded);
callback();
}
}, 10);
}
};
var fn = lib.getElem;
for(var i in lib)
fn[i] = lib[i];
window.lib = window.$ = fn;
})();
이전에는이 방법으로 내 자신의 라이브러리를 사용했으며 정상적으로 작동합니다.
$.getElem('box').html('Welcome to my computer.');
하지만 내 자신의 라이브러리의 코드를 업데이트, 나는이 방법
$('box').html('Welcome to my computer.');
같은 요소 선택기를 사용하고있는 것으로
var fn = lib.getElem;
for(var i in lib)
fn[i] = lib[i];
을 추가하지만 문제가 나타날 시작했을 때 추가 lib 객체를 복제하는 업데이트 된 코드
TypeError: $(...).html is not a function
.
그리고 지금 난 그냥, 난 당신이 이러한 추가 라인을 달성하기 위해 노력하고 정확히 알 수 없지만
$.getElem('box').html('Welcome to my computer.');
고마워,하지만'$ ('box') .html ('내 컴퓨터에 오신 것을 환영합니다.') '을 사용하면 오류 메시지'TypeError : $ (...) is undefined'가 표시됩니다. –
잘 작동합니다. http : // jsfiddle.net/XtbY2/ –
소문자가 왜 여기에 return 키워드를 사용합니까? return lib.getElem.apply (lib, arguments);는 getElem 메소드에있는 명령문 ('return this;')을 반환합니까? –