var node=function(){
var b=0;
this.one=function(){
b=1;
}
this.two=function(){
return b;
}
}
下面测试一下:
先直接执行two()函数,看看打印出来的b是多少:
var obj1=new node();
console.log(obj1.two()); // 0
打印结果是0,这没有问题
下面看看先执行one()函数,再执行two()函数,看看b的值会不会受one()的影响:
var obj1=new node();
obj1.one();
console.log(obj1.two()); // 1
有木有觉得很神奇,感觉this.one中给b赋值不会污染 "全局变量" b,谁知道执行了one()函数,竟然改变了“全局变量” b的值。
2,第二个问题:
var b=function(){
var j=1; //变量
var this.m=2; // 属性
}
b.prototype.get=function(){
console.log( j ); // error m is not defined; 访问变量
console.log( this.j ); //undefined; 访问属性
console.log( m); // error m is not defined; 访问变量
console.log(this.m); // 2 访问属性
}