gpt4 book ai didi

javascript 使用自定义事件创建自定义类

转载 作者:行者123 更新时间:2023-12-03 05:21:12 26 4
gpt4 key购买 nike

假设我有 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 中)执行 init 。所以想法是注册自定义事件,然后从我的类内部触发它们。

最佳答案

我找到了如何做到这一点

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');

关于javascript 使用自定义事件创建自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com