2014-01-27 64 views
1

在做JavaScript應用程序時,我使用下面的約定來編寫我的代碼。隱藏主要對象/類javascript

我使用一個JavaScript對象來保存我所有的函數和運行時信息。

這是一個簡單的用例場景,請勿將其視爲功能代碼。

var main = { 
     functOne: function(val){ 
       main.functTwo(parseInt(val)); 
     }, 
     functTwo: function(data){ 
       main.runtimeData = data; 
     } 
    } 

Usage : <button onclick="main.functOne('123')">Click Me!</button> 

這個本來工作正常,但它可以查看/通過訪問對象main.runtimeData改變從瀏覽器的控制檯中的屬性和運行信息。

那麼如何限制這種訪問而不妨礙功能呢?

如果可以,請添加一些類似代碼的示例。

+3

試圖控制用戶使用您發送到他們的計算機的代碼所做的事情註定會失敗。 – Quentin

+0

@Quentin,我真的不知道你的意思。 – codin

+0

以您想要的方式有效限制訪問是不可能的。 – Quentin

回答

1

Javascript總是「掌握在敵人手中」。話雖如此,模塊模式可能會幫助您隱藏一些功能。編輯:重申,這是不安全或私人的,這一切都在您的用戶手中。

var main = (function() { 

    var x = {}; 

    // Private 
    var private_var = "foo"; 

    // Public 
    x.get_var = function() { 

     return private_var; 
    } 

    return x; 

}()); 

非常粗糙的例子,但它可能會幫助你。更多信息在adequatelygood.com

+0

你能解釋這段代碼的工作原理嗎?不是所有的零碎,只有與我的問題有關的結構。 https://jquery-scrollview.googlecode.com/files/jquery.scrollview.js – codin

2

在現代瀏覽器上,您可以使用freeze來給出一些阻礙。

Object.freeze()方法凍結一個對象:也就是說,阻止向它添加新的屬性;防止現有屬性被刪除;並防止改變現有屬性或其可枚舉性,可配置性或可寫性。本質上,該對象是有效的不可變的。該方法返回被凍結的對象。

+0

你能解釋一下這段代碼的工作原理嗎?不是所有的零碎,只有與我的問題有關的結構。 https://jquery-scrollview.googlecode.com/files/jquery.scrollview.js – codin

+0

我鏈接的MDN頁面爲您提供了完整的描述和示例,甚至還有一個名爲'deepFreeze'的附加函數。你不明白的是什麼? [這是ECMA5參考的進一步鏈接](http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.9)。 – Xotic750