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
  • 相关阅读:
    linux (debian) 配置静态ip
    使用yum高速部署Oracle安装环境(11g)
    shell 例程 —— 解决redis读取稳定性
    面向对象的设计模式(六),状态模式
    python调用shell命令之三慷慨法
    Codeforces Round #316 (Div. 2) C. Replacement(线段树)
    vim随想笔记(1)
    JavaSE入门学习12: Java面相对象之static使用方法
    软件架构————架构核对表
    模板管理类
  • 原文地址:https://www.cnblogs.com/leigood/p/5031958.html
Copyright © 2011-2022 走看看