JS之this与语句分号问题v(**V**)v

 1 <script >
 2     //this知识
 3     //*Q:什么是this?
 4     //*A:所有函数内部都有一个this,任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
 5     //*   它的值是调用函数的当前对象
 6     //*Q:如何确定this的值
 7     //*A:test:window
 8     //    p.test():test
 9     //    new test():新创建的对象
10     //    p.call(obj):obj
11 
12     function Person(color) {
13       console.log(this)
14       this.color = color;
15       this.getColor = function () {
16         console.log(this)
17         return this.color;
18       };
19       this.setColor = function (color) {
20         console.log(this)
21         this.color = color;
22       };
23     }
24 
25     Person("red"); //this是谁? window
26 
27     var p = new Person("yello"); //this是谁? p
28 
29     p.getColor(); //this是谁? p
30 
31     var obj = {};
32     p.setColor.call(obj, "black"); //this是谁? obj
33 
34     var test = p.setColor;
35     test(); //this是谁? window
36 
37     function fun1() {
38       function fun2() {
39         console.log(this);
40       }
41 
42       fun2(); //this是谁? window
43     }
44     fun1();
45 
46     //JS关于加分号问题‘
47     //js一条语句后面可以不加分号
48     //是否加分号是编码风格问题,没有应该或不应该,只有你喜不喜欢
49     //但在以下情况下不加分号会出现问题,要求需要在前面加一个分号
50     //小括号开头的前一条语句
51     //中括号开头的前一条语句
52     var a=3
53     ;(function () {//匿名函数自调用前面如果不加分号会出现错误,所以需要在前面加上一个括号
54 
55     })()
56 
57     var b=4
58     ;[1,2].forEach(function () {//这里在IDE上不会显示红线,但在运行中会出现编译错误,所以这里也要加一个分号,最好是加在一条语句的前面
59 
60     })
61     /*
62     编译器的错误理解:var b=4[1,2].forEach(function () {//就会报undefined
63     })
64     */
65   </script>

猜你喜欢

转载自www.cnblogs.com/junxiaobai/p/10336127.html
V