我是OOP的JavaScript新手。出於測試目的,我創建了以下代碼片段。我創建了四個按鈕,在點擊每個按鈕時,它會發揮不同的功能。當我第一次點擊任何按鈕時,它會給出預測結果。在單擊任何第二次的按鈕,它給了我下面的錯誤:Javascript新操作人員
classFunction = new classFunction();
我已經使用的代碼如下:
<html>
<head>
<script type="text/javascript">
var classFunction;
function classFunction() {
this.publicVariable = 'Public Varibale';
var privateVariable = 'Private Variable';
this.publicMethod = function() {
alert('Public Method');
}
function privateMethod() {
alert('private Method');
}
return this;
}
function privateVariable() {
classFunction = new classFunction();
alert(classFunction.privateVariable);
}
function publicvariable() {
classFunction = new classFunction();
alert(classFunction.publicVariable);
}
function privateFunction() {
classFunction = new classFunction();
classFunction.privateMethod();
}
function publicFunction() {
classFunction = new classFunction();
classFunction.publicMethod();
}
</script>
</head>
<body>
<input type="button" value="Private Variable" onclick="privateVariable()" />
<input type="button" value="Public Variable" onclick="publicvariable()" />
<input type="button" value="Private Function" onclick="privateFunction()" />
<input type="button" value="Public Function" onclick="publicFunction()" />
</body>
</html>
是否有任何理由,新運營商將不再工作?
看看我是如何做到這一點:http://jsfiddle.net/gRoberts/CDhFp/1/ – Gavin 2012-07-26 10:59:54
隨着'classFunction =新classFunction();'你要重寫classFunction'的'全球價值因此第二次調用該函數'classFunction'是原始'classFunction'的一個實例,請嘗試使用'var'關鍵字並使用不同的名稱,如'var someInstance = new classFunction();'。 – Prusse 2012-07-26 11:00:36
順便說一句,你不能調用'.privateMethod'只在閉包內聲明,並且不在外部可用。嘗試谷歌'關閉範圍javascript' =) – Prusse 2012-07-26 11:03:56