如何创建javascript函数';类别';这样我就可以访问';方法';从外部和内部的功能
我正在创建一个函数,用于处理分页和排序表的大量内容。它包含一个键函数,用于提交db查询并更新显示表 我希望能够从函数内部和创建的对象外部访问该内部函数/方法如何创建javascript函数';类别';这样我就可以访问';方法';从外部和内部的功能,javascript,oop,methods,Javascript,Oop,Methods,我正在创建一个函数,用于处理分页和排序表的大量内容。它包含一个键函数,用于提交db查询并更新显示表 我希望能够从函数内部和创建的对象外部访问该内部函数/方法 testFunction = function() { keyMethod = function() { console.log('ya got me'); }; document.getElementById('test').addEventListener('click', function (
testFunction = function() {
keyMethod = function() {
console.log('ya got me');
};
document.getElementById('test').addEventListener('click', function (e) {
keyMethod();
});
keyMethod();
};
myTest = new testFunction();
myTest.keyMethod();
testFunction = function() {
this.keyMethod = function() {
console.log('ya got me');
};
document.getElementById('test').addEventListener('click', function (e) {
// would have to use bind here which then messes up trying to
// find the correct target etc.
keyMethod();
});
this.keyMethod();
};
myTest= new DrawShape();
myTest.keyMethod();
第一种方式创建它意味着keyMethod函数在testFunction中的任何地方都可用,但我不能从外部调用它
用第二种方法创建它意味着我可以使用myTest.keyMethod,但是如果不在任何地方使用bind,我就不能从内部函数调用它
有更好的方法吗?您可以将作为回调函数提供的函数替换为,或者像前面所说的那样先使用该函数
testFunction=function(){
this.keyMethod=函数(){
console.log(‘你抓到我了’);
};
//通过简单地提供要调用的函数来替换回调。
//只要不在
//提供功能。
document.getElementById('test').addEventListener('click',this.keyMethod);
//如果回调方法确实使用'this'关键字,则可以使用
//箭头功能或绑定功能。
document.getElementById('test').addEventListener('click',event=>this.keyMethod());
document.getElementById('test').addEventListener('click',this.keyMethod.bind(this));
这个.keyMethod();
};
log(“构造函数输出:”);
myTest=新的testFunction();
log(“.keyMethod()输出:”);
myTest.keyMethod();
log(“单击事件输出:”)代码>
test
这几乎是仅有的两个选项。你可能想详细说明一下目标绑定问题,我们可能会给你一些建议。target-bind问题,比如我将事件添加到一个带有一些txt/image/icon的标记中。通常我会这样做。getAttribute('blah')从a标记中获取一些内容。若我将其绑定到事件函数,我就不能这样做,e.target将指向标记的内容,即他们单击并冒泡到标记的内容。