2015-10-17 4 views
2

У меня было интервью с JavaScript в последнюю среду, и у меня были проблемы с одним из вопросов. Может быть, вы, ребята, можете мне помочь?JavaScript-прототипы - техническое интервью

Вопрос был: как бы вы об этом печатающего вар а и с к консоли, в верблюжьей случае, с помощью функции прототипа ...

var s = “hello javier”; 
var a = “something else”; 

String.prototype.toCamelCase = function() { 
/* code */ 

return capitalize(this); 


}; 

... так что результат это то же самое, что делать это?

console.log(s.toCamelCase()); 
console.log(a.toCamelCase()); 

>HelloJavier 
>SomethingElse 

Спасибо!

+3

Так что это не прототипы, а о реализации 'функции capitalize'? – dfsq

+1

Можете ли вы включить попытку, которую вы сделали? Или, может быть, объясните, что вы выяснили из вопроса и в какой момент вы боретесь с ним? Боясь просить полного решения, это не то, для чего СО. Мы здесь, чтобы помочь с кодом, который вы написали. –

ответ

2

var s = 'hello javier'; 
 
var a = 'something else'; 
 

 
String.prototype.toCamelCase = function() { 
 
    return capitalize(this); 
 
}; 
 

 
function capitalize(string) { 
 
    return string.split(' ').map(function(string) { 
 
    return string.charAt(0).toUpperCase() + string.slice(1); 
 
    }).join(''); 
 
} 
 
console.log(a.toCamelCase()); 
 
console.log(s.toCamelCase());

Ссылка How do I make the first letter of a string uppercase in JavaScript?

+0

Возможно, это достаточно хорошо для интервью, но в ECMAScript-соглашении вы не хотите использовать первое слово (так как это зарезервировано для конструкторов и синглетов). – Touffy

+0

В вашем решении первая буква имеет заглавные буквы. Редактировать: Touffy избили меня до этого –

+1

В приведенном примере приведена первая буква должна быть заглавной. Возможно, он не является идиоматичным для JavaScript, но подходит для вопроса. –

1

Я бы с чем-то вроде этого:

var s = "hello javier"; 
var a = "something else"; 

String.prototype.toCamelCase = function() { 
    function capitalize(str){ 
    var strSplit = str.split(' '); 

    // starting the loop at 1 because we don't want 
    // to capitalize the first letter 
    for (var i = 1; i < strSplit.length; i+=1){ 
     var item = strSplit[i]; 

     // we take the substring beginning at character 0 (the first one) 
     // and having a length of one (so JUST the first one) 
     // and we set that to uppercase. 
     // Then we concatenate (add on) the substring beginning at 
     // character 1 (the second character). We don't give it a length 
     // so we get the rest. 
     var capitalized = item.substr(0,1).toUpperCase() + item.substr(1); 

     // then we set the value back into the array. 
     strSplit[i] = capitalized; 
    } 
    return strSplit.join(''); 
    } 

    return capitalize(this); 

}; 

// added for testing output 
console.log(s.toCamelCase()); 
console.log(a.toCamelCase()); 
+0

Как указано в комментариях ответа AmmarCSE, мое решение не использует первое письмо, которое является требованием упражнения. –

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