2016-01-24 107 views
0

我無法理解此代碼。 請幫我無法理解此代碼

function HelloFunc(func){ 
    this.greeting = "hello"; 
} 

HelloFunc.prototype.call = function(func){ 
    func? func(this.greeting) : this.func(this.greeting); 
} 

var userFunc = function(greeting){ 
    console.log(greeting); 
} 

var objHello = new HelloFunc(); 
objHello.func = userFunc; 
objHello.call(); 

func? func(this.greeting):this.fun(this.greeting);

這是什麼意思?

還,我無法理解在整個 代碼,請explane代碼

+2

EEEck。代碼不應該試圖覆蓋/替換'fn.call()'。製作與內置名稱不衝突的自己的函數名稱。 – jfriend00

+0

我也無法理解它。 – 2016-01-24 04:25:04

回答

0

這是三元: - 運營商和可改寫爲:

if (func) { 
    func(this.greeting); 
} else { 
    this.func(this.greeting); 
} 

唯一的區別是,原始表達式有一個值,但在上面的代碼片段中,它不被使用。

+0

aha ..謝謝 – YankeeCki

+0

'func'如何在該代碼中工作? – YankeeCki

+0

'func'似乎是一個可選參數,它在設置時包含一個函數(這是javascript中的一階值)。 'if(func)'檢查是否由調用者傳遞。在第一種情況下,調用這個函數,在後一種情況下,一些默認函數是。 – Ctx