zoukankan      html  css  js  c++  java
  • 夺命雷公狗---javascript NO:23 JavaScript中的this指针

    1、自定义类中的this指针

    在php中,我们在自定义类时,属性都是预定义在我们的自定义类中,而在JavaScript代码中,所有对象的属性和方法都是动态添加到对象中,那么可不可以让我们的自定义对象自动拥有类的属性和方法?

    答:可以,通过this指针

    例1:谁实例化自定义类,那么类中的this就指向谁

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=’utf-8′>
    <title></title>
    </head>
    <body>
    <script>
    function Person(){
    this.name = ‘lisi';
    this.age = 23;
    }
    var p1 = new Person();
    alert(p1.name);
    alert(p1.age);
    </script>
    </body>
    </html>

    例2:当我们创建第二个对象,会不会自动拥有name和age属性

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=’utf-8′>
    <title></title>
    </head>
    <body>
    <script>
    function Person(){
    this.name = ‘lisi';
    this.age = 23;
    }
    var p1 = new Person();
    var p2 = new Person();
    alert(p1.name);
    alert(p2.age);
    </script>
    </body>
    </html>

    例3:以上代码可以实现自定义对象自动拥有类中属性和方法,但是其违背事务逻辑,所有的自定义对象拥有的name和age属性都是一样的,改进上题:

     
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=’utf-8′>
    <title></title>
    </head>
    <body>
    <script>
    function Person(name,age){
    this.name = name;
    this.age = age;
    }
    var p1 = new Person(‘zhangsan’,22);
    var p2 = new Person(‘lisi’,’23’);
    alert(p1.name);
    alert(p2.age);
    </script>
    </body>
    </html>

    注:在我们的JavaScript代码中,函数的形参是不能设置默认值的,以下情况是不允许的(错误的)

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=’utf-8′>
    <title></title>
    </head>
    <body>
    <script>
    function Person(name,age=23){
    this.name = name;
    this.age = age;
    }
    var p1 = new Person(‘zhangsan’,22);
    var p2 = new Person(‘lisi’,’23’);
    alert(p1.name);
    alert(p2.age);
    </script>
    </body>
    </html>

    2、深入理解this指针

    结论:在我们的JavaScript全局作用域中,也是存在this指针的,其指向Window对象

    验证以上结论:

    例1:尝试理解下面两条语句:

    i=10;
    alert(this.i); //this->window==window.i    10

    例2:

    function test(){
    this.i=100;
    }
    i=10;
    test();
    alert(this.i); //100

    示例:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=’utf-8′>
    <title></title>
    </head>
    <body>
    <script>
    function test(){
    this.i = 100;
    }
    i = 10;
    test();
    alert(this.i);//100
    </script>
    </body>
    </html>

    例3:

    var i=100;
    function test(){
    i=200;
    }
    test()
    alert(i);  //200
  • 相关阅读:
    我是新手,我在学Android
    WAMP环境下(apache2.2.21+Php5.3.10)编写PHP扩展
    java中三种字符串正则匹配方式
    PHP扩展开发过程中的问题
    Android错误解决方法之:Debug certificate expired on
    Ubuntu下C++开发PHP开发扩展的注意事项
    我的笔试题
    很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别
    C语言常用宏定义
    Linux下用C++开发PHP扩展
  • 原文地址:https://www.cnblogs.com/leigood/p/5031958.html
Copyright © 2011-2022 走看看