簡體   English   中英

Javascript 函數中 var 和 this 的區別?

[英]Difference between var and this in Javascript functions?

var tools = {};

tools.triangle = function() {
    var originX = 0;
    var originY = 0;
}

var tools = {};

tools.triangle = function() {
    this.originX = 0;
    this.originY = 0;
}

這兩個代碼塊之間有什么區別嗎? 抱歉,如果之前已經問過這個問題。

vartools.triangle創建一個局部變量。 變量originXoriginY不能在tools.triangle之外與外部tools.triangle this是指向您正在處理的當前對象的指針。 第二個示例可用於通過執行new tools.triangle();為對象賦予屬性new tools.triangle(); . 如果你不使用new而只是使用tools.triangle(); this將指向全局對象,即window對象。 您可以使用函數方法call();更改this指向的對象call(); apply(); 像這樣:

var myObj = {};

tools.triangle.call( myObj );

// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY

重要的是要知道this可以引用任何對象,也可以在 ES5 嚴格模式下為 undefined 或null

您可以在此處找到更多信息。

在第一個例子中,X 和 Y 都作為局部變量存在於變量triangle保存的閉包中。

在第二個示例中,由於使用了this ,X 和 Y 作為對象tools.triangle變量存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM