Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在类范围内定义javascript的变量_Javascript - Fatal编程技术网

在类范围内定义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){ 返回函数()

伙计们,我知道这是一个愚蠢的问题,但我试了很多次,但始终没有达到。。我想在类的作用域内定义Javascript文件的变量,使其不被任何外部源重写。。这是我的密码

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?在函数中,您必须调用此.pageSize
this.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();