2016-01-23 107 views
-1

你能解釋一下下面例子中ModelState.IsValidModelState.IsValid()之間的區別嗎? (他們兩人正在)爲什麼對象上的方法是正確的?

var func = function() { 
 
    var ModelState = { 
 
    IsValid: function() { 
 
     return true 
 
    } 
 
    }; 
 
    
 
    // ModelState.Isvalid() is working, too 
 
    document.body.innerHTML = ModelState.IsValid 
 
     ? 'ModelState is valid' : 'ModelState is invalid' 
 
};
<button onclick="func()">Click me</button>

正如你可以在上面看到,ModelState是一個JSON對象。如果我可以撥打ModelState.IsValid,在這種情況下是IsValidjson property

+2

的ModelState不是JSON對象。它是一個對象文字。而IsValid是ModelState對象字面值的一個屬性。 –

+1

@TarunDugar是正確的。我認爲你對調用沒有括號的函數的區別感到困惑。這裏有一個類似的問題來幫助你http://stackoverflow.com/questions/3246928/in-javascript-does-it-make-a-difference-if-i-call-a-function-with-parentheses –

回答

1

IsValid是一個函數。所以當你做這個ModelState.IsValid時,這將返回函數而不是它的值。

ModelState.IsValid()這將執行它並給你返回值。

var func = function() { 
 
    var ModelState = { 
 
    IsValid: function() { 
 
     return true 
 
    } 
 
    }; 
 
    
 
    console.log("ModelState.IsValid: ", ModelState.IsValid) 
 
    
 
    console.log("ModelState.IsValid():", ModelState.IsValid()) 
 
    
 
    // ModelState.Isvalid() is working, too 
 
    document.body.innerHTML = ModelState.IsValid 
 
     ? 'ModelState is valid' : 'ModelState is invalid' 
 
};
<button onclick="func()">Click me</button>

現在,爲什麼三元操作符:

JS嘗試值轉換爲Boolean。如果這不可行,則檢查可用性。所以,當你做

if("") 

""轉換爲00被認爲是假的,但如果它的價值,它被認爲是真實的。

var a = ""; 
 

 
alert(a?true:false); 
 

 
a = "function(){...}"; 
 

 
alert(a?true:false);

+0

謝謝!我試過了,看到了不同之處。但是當我更改'document.body.innerHTML = ModelState.IsValid? 'ModelState is valid':'ModelState is invalid'' to'document.body.innerHTML = ModelState.IsValid()? '模型狀態有效':'模型狀態無效'。我得到相同的結果。 –

+0

你能告訴我更多關於那個嗎? –

+0

我已經更新了我的答案。希望這有助於 – Rajesh

1

如果我可以調用ModelState.IsValid,IsValid是否在 中調用了json屬性這種情況?

ModelState是對象字面值,isValid是此對象的屬性。

如果你改變你的代碼

document.body.innerHTML = ModelState.Isvalid 
     ? 'ModelState is valid' : 'ModelState is invalid' 

它將輸出ModelState is invalid

+0

你'爲什麼沒有改變代碼 –

+0

? 'ModelState.IsValid'是一個非空方法,它是truthy,所以它應該顯示'modelState is valid'。 – 2016-01-23 07:44:28

+0

@torazaburo對不起,有人編輯了代碼,並由於某種原因編輯被接受了! – gurvinder372

相關問題