Я создаю библиотеку с некоторыми методами, и у меня есть метод extend
и метод load
. Я ХОЧУ, чтобы это работало так:
Core.extend('name',function(message){
this.innerHTML = message;
});
Затем, чтобы запустить это, вы должны сделать:
Core.load('name','Hey!');
Я знаю о Core.extend () Core.load () Обратите внимание, что это основная строка: Core.extend ()
создает элемент
этот
== сгенерированный
.call ()
и .apply ()
, очевидно, но это не меняет this
, а только расширяет параметры обратного вызова. Вот код для расширения и загрузки: 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');
}
}
}
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');
}
}
}