2015-05-09 4 views
-1

Я очень новый с framer.js и я только после книги под названием http://coffeescript-for-framerjs.com/#buy, где это написано Почему .toUpperCase() не работает?

fruits[1].toUpperCase() Он работал должным образом

fruits.toUpperCase() 

Вот в книге это плод не фрукты я пробовал оба, но получаю ошибку

Теперь я понял, что toUpperCase() - это строковый метод, поэтому он не будет работать с массивом. но что именно здесь говорит книга.

+0

Массив не имеет метода .toUpperCase. – Nit

+0

Как 'fruit' - массив, и у него нет метода. 'toUpperCase()' является строковым методом. Таким образом, ошибка правильная, используйте простой цикл – Satpal

ответ

1

Плоды массива. Функция toUpperCase не определена в массиве, а для строковых объектов.

1

Поскольку fruits[1] со ссылкой на свой array элемент, который имеет тип String

toUpperCase() может быть использован только для String типа.

fruits.toUpperCase() не удается плодах типа Array

Read More here

8

Почему:

.toUpperCase() является метод String.prototype, не Array.prototype.

Пример правильного синтаксиса в вашем случае:

var fruits = ['apple', 'orange', 'kiwi'] 

for (var i = 0; i < fruits.length; i++) { 
    fruits[i] = fruits[i].toUpperCase(); 
} 
1

Если вы хотите, чтобы сделать его работу таким образом:

Array.prototype.toUpperCase = function() { 
    for(var i = 0; i < this.length; i++) 
     if(typeof this[i] === 'string') 
      this[i] = this[i].toUpperCase(); 
} 

для проверки:

var fruits = ["oranges", "apples", "bananas"]; 
fruits.toUpperCase(); 
console.log(fruits.toString()); 

ИСПЫТАНИЯ, ЯБЛОКИ, БАННАНЫ

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

  • Нет связанных вопросов^_^