2016-05-13 27 views
0

這是我認爲最適合在JSJavascript對象的創建實踐

function obj(){ 
     var x = "hi"; 
     this.getX(){return x;} 
    } 
    var y = new obj() 
    console.log(y.x); //this returns undefined 

製造物體但是從我所看到的,使用this.variable更常用的對象創建。

我想在java中,事情應該是「私人」在類(注意我已閱讀關閉),這是否適用於JS?

什麼被認爲是創建對象的最佳方式?

+2

http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript – Keatinge

+0

請出示一些代碼來證明你是問究竟。從這個問題的文本來看,這聽起來像是一個「局部變量」,它在Java中更接近等效。 – Thilo

+0

我正在從我閱讀關於var vs這篇文章的各種帖子中看到這一點。另外,我正在閱讀ee的其他鏈接,如果它有幫助。謝謝 –

回答

4

聽起來好像你正試圖將Java概念應用到JavaScript中,但JS中的東西完全不同。您應該查看MDN article on JavaScript closures.

var變量存在於閉包中。它們可以在同一範圍內聲明的任何函數訪問。

var me = 'hello'; 
function someFunction() { 
    console.log(me); 
} 
someFunction(); //prints 'hello' to console 

變量將是直接訪問,即使外面的範圍,在生成的對象。

function someFunction() { 
    this.me = 'hello'; 
} 
var instance = new someFunction(); 
console.log(instance.me); //prints 'hello' to console 
+0

謝謝,這樣看起來更加細緻,並且會查看它。但是我錯誤地按照上面的方式使用它嗎?或沒有?我很困惑。它做我想要的。謝謝 –

+0

沒有告訴我們你想要達到什麼目的,沒有「錯誤」(或者說,所有的工作都是「正確的」)。兩種模式都有其用途。 – Thilo