国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

java中this用法和javascript中的this用法

2019-11-08 01:45:24
字體:
供稿:網(wǎng)友

今天回顧了一下java基礎(chǔ),突然發(fā)現(xiàn)自己把java和JavaScript中this的概念混淆了,所以記錄一下以備不時之需

java:

1.this它可以在類里面來引用這個類的屬性和方法

代碼:

public class Test {    PRivate int x = 10;    public Test(int x){        System.out.println("賦值前的全局變量"+this.x);        System.out.println("形參x="+x);        this.x = x;        System.out.println("賦值后的全局變量"+this.x);    }    public static void main(String[] args) {        Test t = new Test(11);    }

}

結(jié)果:

賦值前的全局變量10形參x=11賦值后的全局變量11

2.通過this 這個關(guān)鍵字返回自身這個對象

代碼:

public class ThisDemo {    private int count ;   //全局變量Java虛擬機都會先自動給它初始化為默認值。 而局部變量不行    public ThisDemo add(){        count++;        return this;    }    public void print(){        System.out.println("count="+count);    }    public static void main(String[] args) {        new ThisDemo().add().add().print();    }}結(jié)果:count=2

其中初始化賦值如下

             Boolean      false             Char           '/u0000'(null)             byte            (byte)0             short           (short)0             int               0             long            0L             float            0.0f             double        0.0d

3.構(gòu)造函數(shù)之間的調(diào)用

代碼:

public class ThisDemo {    String name ;    int age ;    public ThisDemo(){        this.age = 21;    }    public ThisDemo(String name,int age){        this();函數(shù)有所屬對象時:指向所屬對象函數(shù)有所屬對象時:指向所屬對象        this.name = name;    }        public void print(){        System.out.println("賦值后的名字"+this.name);        System.out.println("賦值后的年齡"+this.age);    }    public static void main(String[] args) {        new ThisDemo("桂綸鎂",23).print();    }}

結(jié)果:

賦值后的名字桂綸鎂賦值后的年齡21

javascrip:

1.函數(shù)有所屬對象時:指向所屬對象

代碼:

    var myObject = {        value : 10    };    myObject.fun = function(){        var value = 100;        alert(value);        alert(this.value);        alert(this);    };    myObject.fun();

結(jié)果:100

         10

         Object

2.函數(shù)沒有所屬對象:指向全局對象(將上述代碼進行小小的改動)

代碼:

var myObject = {        value : 10    };    myObject.fun = function(){        fun1 = function(){            alert("fun1:"+this.value);        }        var value = 100;        alert(value);        alert(this.value);        alert(this);    };    myObject.fun();    fun1();

結(jié)果:

100

10

Object

fun1:undefined

分析:

因為fun1()這個函數(shù)沒有綁定在任何一個對象上,所以它屬于window這個對象,所以它的this指的是全局變量,而全局變量沒有這個value

所以就為undefined

3.構(gòu)造器中的 this:指向新對象

代碼:

var value = 10 ;fun = function(){    var value = 100;    alert(this.value);    alert(value);}fun();var f = new fun();

結(jié)果:

10

100

undefined

100

分析:我用了兩次調(diào)用來區(qū)分new一個函數(shù)和普通函數(shù)的區(qū)別,很明顯,當我new一個函數(shù)的時候,這時他所屬的對象是f,而f沒有value這個值,所以它的this.value為undefined

既然都是作用域,就擴展一下說一下apply()和call()的異同

相同點:兩個方法產(chǎn)生的作用是完全一樣的。

不同點:方法傳遞的參數(shù)不同

function A(){    this.flag = 'A';    this.tip = function(){        alert(this.flag);    };};function B(){    this.flag = 'B';};var a = new A();var b = new B();a.tip.call(b);

a.tip.apply(b);

兩次運行結(jié)果都是B,注意這里tip是屬性所帶的方法,之前寫錯了看很久才發(fā)現(xiàn),apply()和call()都是function.prototype里自帶的

總結(jié)一下:

java中this.value可以再本類中調(diào)用全局變量,也可以在構(gòu)造器中用this()調(diào)用其他構(gòu)造器,也可以用this表示當前對象

Javascript中this指的是這個函數(shù)所屬的對象的值,當new一個函數(shù)時,這個this就會指向這個new出來的對象,apply()和call()可以改變一個函數(shù)中this指向的對象


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 烟台市| 乌兰县| 松原市| 宝应县| 资溪县| 天镇县| 古交市| 穆棱市| 云林县| 万山特区| 正蓝旗| 内江市| 沙田区| 莱阳市| 武义县| 开封市| 永州市| 河源市| 乳山市| 理塘县| 巴彦淖尔市| 鄂托克前旗| 桦南县| 宁陕县| 北宁市| 岱山县| 苍梧县| 邯郸市| 山东省| 外汇| 天镇县| 务川| 柳河县| 苗栗市| 读书| 汽车| 塘沽区| 南宫市| 固阳县| 郑州市| 三门县|