buduję biblioteka z niektórych metod i mam metodę extend
oraz sposobu load
. Chciałbym go do pracy tak:zmienić funkcje „to” wartość w JavaScript
Core.extend('name',function(message){
this.innerHTML = message;
});
Wtedy rzeczywiście uruchomić to chcesz zrobić:
Core.load('name','Hey!');
Core.extend()
tworzy <div>
element z unikatowy identyfikator, na podstawie nazwy. Chcę, aby this
== wygenerowany <div>
.
Wiem o numerach .call()
i .apply()
, oczywiście, ale to się nie zmienia this
zmienia tylko parametry wywołania zwrotnego w rozszerzeniu. Oto kod dla rozszerzenia i obciążenie:
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()
Uwaga ta jest głównym linia: 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');
}
}
}
TAK! Duh! Zawsze myślałem, że pierwszym parametrem było "co zmodyfikować". To znaczy. gdybym zrobił '.call (widgetElement, 'duh')' to w moim callbacku pierwszy param równałby się 'duh'. Dzięki :) P.S. Znów źle, gdy upłynie czas ... –