![](/img/trans.png)
[英]How to create, add custom properties to and fire custom events in vanilla Javascript
[英]javascript create custom class with custom events
假設我有javascript類。
function myClass(){
function someProcess(){
listeners.init();
}
var listeners = {
init: function(){},
message: function(){}
}
return {
on: function( prop ) {
if ( listeners.hasOwnProperty( prop ) ) {
return listeners[ prop ];
}
}
}
}
然后有人像這樣創建對象並使用我的自定義事件
var c = new myClass();
c.on('init', function(){
console.log('init executed');
});
現在我想從我的someProcess()方法(在myClass中)執行初始化。 因此,想法是注冊自定義事件,然后從我的班級內部觸發它們。
我發現了怎么做
function MyClass(){
//@private
var isFunction = function(functionToCheck){
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}
//@private
var listeners = {
init: [],
message: []
}
return {
on: function( evName, callback ) {
if ( listeners.hasOwnProperty( evName ) && isFunction(callback) ) {
listeners[evName].push(callback);
}
},
fireEvent: function(evName){
if ( listeners.hasOwnProperty( evName )) {
for(var i in listeners[evName]){
listeners[evName][i]();
}
}
}
}
}
var a = new MyClass();
a.on('init', function(a){
console.log('a_1 inited')
})
a.on('init', function(){
console.log('a_2 inited')
})
var b = new MyClass();
b.on('init', function(){
console.log('b_1 inited')
})
a.fireEvent('init');
b.fireEvent('init');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.