var定义的变量都是局部变量,依赖局部作用域分为window和函数内部两种
function A(){
var a;//函数A的作用域里的变量,
b;//是函数A里的全局变量
this.a;//是函数A的属性, 调用(×),外部调用new A().a
}
没写var 就是window对象的成员变量,依赖window或当前对象作用域,
this.a则是对象变量,依赖当前对像。
js中没有private static procted public 修饰符
js语法跟php很像,如果一个方法不new 它,那么他就是window下一个普通方法,如果new 的话,就是一个window下一个对象
//以下三个函数区别
//1
var str = "global";
function scopeTest(){
alert(str);//下面虽然是定义var01并同时初时话,但var01在整个函数内部都是有作用的,故相当于先声明,后初始化。所以此处输出undefined,既没有赋值
//所以总结:用var定义的变量是先确定在整个区间作用域,但是它的赋值确是undefined
str = "local";
alert(str);
}
scopeTest();
//2
var str = "global";
function scopeTest(){
alert(str);
str = "local";
alert(str);
}
scopeTest();
//3
var str = "global";
function scopeTest(){
alert(str);
alert(str);
}
scopeTest();
//闭包列子
var datamodel = {
table : [],
tree : {}
};
(function(dm){
for(var i = 0; i < dm.table.rows; i++){
var row = dm.table.rows[i];
for(var j = 0; j < row.cells; i++){
drawCell(i, j);
}
}
//build dm.tree
})(datamodel);
