在类范围内定义javascript的变量
伙计们,我知道这是一个愚蠢的问题,但我试了很多次,但始终没有达到。。我想在类的作用域内定义Javascript文件的变量,使其不被任何外部源重写。。这是我的密码在类范围内定义javascript的变量,javascript,Javascript,伙计们,我知道这是一个愚蠢的问题,但我试了很多次,但始终没有达到。。我想在类的作用域内定义Javascript文件的变量,使其不被任何外部源重写。。这是我的密码 var pageSize=5; var startIndex=0; var endIndex=startIndex+pageSize; var-page=1; var-textField; var检查=0; //我希望上述所有变量都在类的范围内定义,而不是在类的范围外 函数bindContext(fn,context){ 返回函数()
var pageSize=5;
var startIndex=0;
var endIndex=startIndex+pageSize;
var-page=1;
var-textField;
var检查=0;
//我希望上述所有变量都在类的范围内定义,而不是在类的范围外
函数bindContext(fn,context){
返回函数(){
fn.应用(上下文、参数);
}
}
函数GridLibraryDep(数据){
这个数据=数据;
this.columns=$.map(this.data[0],函数(项,键){
返回键;
});
document.getElementById(“from”).innerHTML=1;
document.getElementById(“to”).innerHTML=pageSize;
document.getElementById(“total”).innerHTML=data.length;
$(“#first”)。单击(bindContext(this.first,this));
$(“#last”)。单击(bindContext(this.last,this));
}
GridLibraryDep.prototype={
第一:函数(){
变量大小=this.data.length;
page=1;
//document.getElementById(“lbl”).innerHTML=page;
endIndex=页面*页面大小;
startIndex=endIndex-pageSize;
这个.deleteTable();
document.getElementById(“from”).innerHTML=1;
document.getElementById(“to”).innerHTML=endIndex;
document.getElementById(“总计”).innerHTML=大小;
这个.display();
},
最后:函数(){
变量大小=this.data.length;
endIndex=大小;
startIndex=数学楼层(大小/页面大小)*页面大小;
page=Math.ceil(大小/页面大小);
这个.deleteTable();
//document.getElementById(“lbl”).innerHTML=page;
document.getElementById(“from”).innerHTML=startIndex+1;
document.getElementById(“to”).innerHTML=endIndex;
document.getElementById(“总计”).innerHTML=大小;
这个.display();
}};代码>这是创建原型类的常用方法-
下面是上面JSFIDLE链接中可用的示例用法:
var newClass = new MyClass();
newClass.init();
newClass.first();
for(var i=0; i<10; i++){
newClass.iterater(i);
newClass.last();
}
然后,可以通过将受保护变量设置为私有,在类中创建受保护的变量。这里有一篇关于创建受保护变量的潜在方法的好文章
对于GridLibraryDep
的每个实例,这些变量应该是不同的/独立的,还是您希望每个实例共享这些变量?我希望每个实例共享这些变量您的问题是什么?如何在GridLibraryDep
中创建“私有”变量?不。。我希望satrtIndex和所有这些变量都在GridLibraryDep的范围内声明,而不是在外部声明。。。顺便说一句,这些变量在实例之间共享我删除了我的答案,因为它不清楚你在问什么。它给我的页面大小没有定义var MyClass=MyClass | |{}代码>没有多大意义,因为它等于var MyClass={}代码>。您的(函数(){…})
未被调用,因为您缺少调用该函数的()
。如果添加()
来调用函数,那么var MyClass={}代码>没有意义,因为您会立即覆盖MyClass
。此外,endIndex:this.startIndex+this.pageSize,
没有意义,因为在给定的示例中,this
是窗口。您可以在此处阅读有关名称空间的更多信息:。我同意您需要将“endIndex”赋值移动到初始化函数。。。我没有时间为你写每一行代码。。。这是一个编写类的模型,很容易调试。@yomnaesam您在哪里调用未定义的pageSize?在函数中,您必须调用此.pageSizethis.pageSize
此处未定义:endIndex:this.startIndex+this.pageSize,
,因为在计算this.startIndex+this.pageSize
时,this
是窗口
。
var newClass = new MyClass();
newClass.init();
newClass.first();
for(var i=0; i<10; i++){
newClass.iterater(i);
newClass.last();
}
var newClass = new MyClass();
newClass.init();