zoukankan      html  css  js  c++  java
  • 使用 this 关键字定义方法和属性

    1、方法和属性的定义

    属性是类中声明的变量,与其他地方变量的声明基本相同,只是属性必须 this 关键字,并且这里没有var 关键字。

    this.age;

    在使用时,先是 this 关键字,之后的点语法连接的是方法名,就像是声明一个匿名函数,只不过属于 this 关键字。

    参数 arg_1,arg_n等都是该方法使用的参数,参数之间使用逗号隔开,这也被称为参数列表。在参数后的花括号{},即为整个方法的内容。

    方法如有返回值,使用 return 返回。

    2、属性的初始化

    当为类定义一个属性时,可以为属性赋值,称为属性的初始化。属性在定义时也可以没有初始值。

    3、在类体内使用 this 关键字

    在类内,如果要访问该类定义的方法或属性,必须使用 this 关键字,它表示类的实例自身,使用它可以引用当前代码的类的特定实例。

    this 的行为与引用当前类的实例的变量类似。

    4、易犯的错误

    在方法内嵌入的函数形成一个新的运行环境,在该内嵌函数内使用 this 并不会指向对象的实例,而是指向全局对象 window。

    function Foo(){}

    Foo.prototype.method = function(){

     function test(){

      alert(this);

      // this 在这个对象里是全局函数

     }

     test();

    }

    var foo = new Foo();

    foo.method();

    要在嵌入的函数内使用 this,那么最好的是用一个中间变量,比如:

    function Foo(){}

    Foo.prototype.method = function(){

    var that = this;

    function test(){

      alert(that === foo );

      //that 在这个函数里是 foo对象

    }

    test();

    }

    var foo = new Foo();

    foo.method();

     对于静态方法,存在相同的问题,使用相同的办法解决。

     

    5、闭包方法(绑定方法)内的 this 关键字

     如果在闭包方法中使用 this 关键字要非常小心。闭包方法并不能确保 this 关键字总是引用在其中定义了方法的对象或类。

     

    6、另外一个 使用 this 易犯的错误。

    this 指向它执行的环境,如果构造方法不是使用 new 运算符创建实例,而是直接像调用函数那样调用,那么this关键字就不会代表该类的实例。

  • 相关阅读:
    图的建立的两种方法(领接矩阵,领接表)
    蛇形填数
    谁买单,猴子选大王等类似题目不同解法!!!
    根据前序中序写后序(正确写法)
    月份牌
    子网掩码
    android 之 surfaceView和普通View的重绘使用
    android 之 Toast通知的使用
    viewSub惰性装载器
    对文件进行加密
  • 原文地址:https://www.cnblogs.com/chengmingxiaowu/p/7686456.html
Copyright © 2011-2022 走看看