当前位置:编程学习 > JAVA >>

JavaScript全面了解作用域(基础、this、闭包、继承)之二

this这个东西,确实不好懂,很具有迷惑性,一不小心就错了。

this代表的是当前的作用域,知道当前的作用域,就可以确定了,但是这不是很容易确定。

第四部分:在全局中使用this


<script> 
        var a = 2; 
        function test(){ 
         
            var a = 1; 
            document.writeln(a); 
            document.writeln(this.a); 
             
        } 
         
        test(); 
        document.write(this.a); 
    </script> 
<script>
        var a = 2;
        function test(){
       
            var a = 1;
            document.writeln(a);
            document.writeln(this.a);
           
        }
       
        test();
        document.write(this.a);
    </script>
你认为结果是什么呢?1 1 2?但是结果是1 2 2

很有疑问吧?调用这个函数是在window中调用,所以说this就是window,window.a=2。不是this存在test()当中,this就是在test域。

第五部分:在对象中使用this


<script> 
       var name = "JIM"; 
       function Person(){ 
           this.name = "Mike"; 
           this.myname = getName; 
       } 
        
       function getName(){ 
           return this.name; 
       } 
        
       var person = new Person(); 
       document.write(person.myname()); 
   </script> 
 <script>
        var name = "JIM";
        function Person(){
            this.name = "Mike";
            this.myname = getName;
        }
       
        function getName(){
            return this.name;
        }
       
        var person = new Person();
        document.write(person.myname());
    </script>
结果是Mike。this所在的作用域是在person当中,先搜索其中的属性,然后搜索原型,一直找到。


<script> 
        var name = "JIM"; 
        function Person(){ 
            this.myname = getName; 
        } 
        Person.prototype.name="Mike"; 
        function getName(){ 
            return this.name; 
        } 
         
        var person = new Person(); 
        document.write(person.myname()); 
    </script> 
<script>
        var name = "JIM";
        function Person(){
            this.myname = getName;
        }
        Person.prototype.name="Mike";
        function getName(){
            return this.name;
        }
       
        var person = new Person();
        document.write(person.myname());
    </script>
这里一直搜索到Person.prototype.name

第五部分:this在继承当中使用


<script> 
        var name = "JIM"; 
        function Person(){ 
            this.myname = getName; 
            this.name="Mike"; 
        } 
        function Son() 
        { 
            this.name="Sam"; 
        } 
        Son.prototype=new Person(); 
        function getName(){ 
            return this.name; 
        } 
         
        var son = new Son(); 
        document.write(son.myname()); 
    </script> 
<script>
        var name = "JIM";
        function Person(){
            this.myname = getName;
   this.name="Mike";
        }
        function Son()
  {
   this.name="Sam";
  }
  Son.

补充:web前端 , JavaScript ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,