2016-01-24 6 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

Я тоже не понимаю. –

ответ

0

Это тройная: - оператор и может быть переписано в виде:

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

Разница только в том, что исходное выражение имеет значение, но в фрагменте кода выше оно не используется в любом случае.

+0

aha .. спасибо – YankeeCki

+0

Как работает «func» в этом коде? – YankeeCki

+0

'func' представляется необязательным параметром, который содержит функцию (которая является значением первого порядка в javascript) при установке. 'if (func)' проверяет, был ли он передан вызывающим или нет. В первом случае эта функция вызывается, в последнем случае используется некоторая функция по умолчанию. – Ctx

Смежные вопросы