몇 가지 방법으로 라이브러리를 만들고 있는데, 방법이 extend
이고 메서드가 load
입니다. 나는이 같은 일을하고 싶습니다 :JavaScript의 함수 "this"값을 변경하십시오.
Core.extend('name',function(message){
this.innerHTML = message;
});
그리고 실제로 당신이 할 거라고 실행 :
Core.load('name','Hey!');
Core.extend()
는 이름을 기준으로 고유 ID와 <div>
요소를 작성합니다. 나는 this
== 생성 된 <div>
을 만들고 싶습니다.
나는 약 .call()
과 .apply()
을 분명히 알지만, 변경되지는 않습니다. this
확장의 콜백 매개 변수 만 변경됩니다. extensions[name].call(this,widgetElement,params);
var load = function(name,params,sel){
name = name || '';
params = params || '';
sel = sel || '';
if(typeof extensions[name] !== 'undefined'){
var widgetElement = document.createElement(settings.widgetWrapperElement);
widgetElement.setAttribute('id',settings.prefixOnWidgetId+name);
sel.appendChild(widgetElement);
extensions[name].call(this,widgetElement,params);
}
else{
if(errors){
throw new Error('Core load() error: the extension "'+name+'" doesn\'t exist');
}
}
}
이 메인 라인
Core.extend()
var extend = function(name,func){
name = name || '';
func = func || function(){};
if(typeof extensions[name] == 'undefined'){
extensions[name] = func;
}
else{
if(errors){
throw new Error('Core extend() error: the extension "'+name+'" already exists');
}
}
}
Core.load()
참고 : 다음은 확장 및 부하에 대한 코드는
예! 이런! 저는 항상 첫 번째 매개 변수가 "무엇을 수정해야 할 것"이라고 생각했습니다. 나는. '.call (widgetElement, 'duh')'를 호출하면 콜백에서 첫 번째 매개 변수는'duh'와 같습니다. 고마워요. 한 번 시간이 지나면 올바른 표시로 잘못 표시됩니다 ... –