-1

我对 framer.js 很陌生,我只是在关注一本名为http://coffeescript-for-framerjs.com/#buy的书

fruits[1].toUpperCase()它工作正常

fruits.toUpperCase()

在书中,这是水果而不是水果,我都尝试过,但出现错误

现在我知道toUpperCase()是一个字符串方法,因此它不适用于 Array。但是这本书到底在说什么。

4

5 回答 5

8

为什么:

.toUpperCase()是的方法String.prototype,不是Array.prototype

在您的情况下正确语法的示例:

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

for (var i = 0; i < fruits.length; i++) {
    fruits[i] = fruits[i].toUpperCase();
}
于 2015-05-09T09:20:05.720 回答
1

Fruits 是一个数组。toUpperCase 函数不是在数组上定义的,而是在字符串对象上定义的。

于 2015-05-09T09:08:34.173 回答
1

因为fruits[1]指的是你的array元素类型String

toUpperCase()只能用于String类型。

fruits.toUpperCase()失败的水果是类型Array

在这里阅读更多

于 2015-05-09T09:09:33.320 回答
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());

橙子、苹果、香蕉

于 2015-05-09T09:58:05.653 回答
0

我还能够通过以下方式解决它:

let fruit = new Array("peach","orange", "mango", "apple" );
console.log(fruit.toString().toUpperCase());
于 2020-12-17T04:26:55.493 回答