1.js 变量作用域

函数外面的,不管带不带var 都是全局变量。按照守则:函数外面的,建议都带上var

函数里面的,带var 的是局部变量,不带var 就会变成全局变量,

2.js 的作用域,属于方法级,不是块级。

function test(){                                                                
if(1==1) {
var xo=123;
}
else{
var ox=345;
}
console.log(xo,ox)
}

test();  //输出结果为:123,undefined

 由此可以看出来,不管变量定义在哪儿,只要在函数里面,他就会作用到他以下的部分。而如果在java中,因java 是块级作用域,那么xo只能作用在if中。最终就不能输出xo的值。

3.js 是一门面向对象的语言,js对象说明:

window 是浏览器窗口对象。可以获取到浏览器窗口下的所有东西,如;window.close 关闭窗口/ window.open 打开新窗口/window.document  /window.location.href 设置网站地址。

document 是html 之上的对象,window之下的对象。下有:document .html 、document .head、document .body 几大属性各自代表了html、head、body 三个标签。

document.write 往屏幕上写东西,放在那儿就 在html中那个位置输出。

documentElement 是html对象。

4.var obj =new Object()的解释

var obj =new Object(); 
obj.name="zzz";
obj.say=funciton(){
alert("dddd"+this.name);
}

alert(obj.name); //输出的是zzz
obj.say(); 输出的是:ddddzzz

 new Object() 是js底层已经有的类。直接我们创建对象对象,然后就可以随便给这个对象创建属性。

注:this 是对象的意思。他代表的就是“.”前面的东西。

5.this的指向问题

this 不在于写的时候,指向的谁。而在于在运行的时候,谁在运行这个函数,this就指向谁。

var o={
name :"cj";
print:fuction(){
   console.log(this.name);  
    }
};

o.print();  //输出cj
var ff=o.print();
ff(); // 输出undefined
window.ff();//输出undefined
this.name="ccc";
ff(); //输出ccc

 从上面的例子看出:在定义o变量的时候,this按照逻辑上应该是指向o对象的。 

当o的方法,被赋值给ff后,其实就是ff对象有了一个和o对象中一样的属性print。

根据this指向的是"."前面的东西。那么当调用ff() 方法的时候,this 指向了ff() 对象前面的东西。ff()前面的东西就是window  。根据js的对象结构。我们知道window是最顶层的对象。

所以,this此时指的是window。

 

posted on 2019-07-18 23:01  进_进  阅读(753)  评论(0)    收藏  举报