为什么.toUpperCase()不起作用?

时间:2015-05-09 09:06:15

标签: javascript coffeescript framerjs

我是framer.js和 我正在关注一本名为http://coffeescript-for-framerjs.com/#buy的书

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

fruits.toUpperCase()

这里的书是水果而不是水果我试过这两个但是收到错误

现在我知道 toUpperCase()是一个字符串方法,所以它不适用于Array。但那时书究竟在说什么呢。

5 个答案:

答案 0 :(得分: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 :(得分:1)

水果是一个阵列。 toUpperCase函数未在数组上定义,但是对于字符串对象。

答案 2 :(得分:1)

由于fruits[1]引用了array类型为String

toUpperCase()元素

String只能用于fruits.toUpperCase()类型。

Array失败的果实类型为<sap:ActivityDesigner x:Class="ARIASquibLibrary.Design.TestArrayActivityDesigner" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation" xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation" xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation" Collapsible="False"> <sap:ActivityDesigner.Resources> <ResourceDictionary> <sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" /> </ResourceDictionary> </sap:ActivityDesigner.Resources> <Grid> <sapv:ExpressionTextBox MaxWidth="150" MinWidth="150" Margin="5" OwnerActivity="{Binding Path=ModelItem}" Expression="{Binding Path=ModelItem.StringsList, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In }"/> </Grid>

Read More here

答案 3 :(得分: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());
  

柑桔,苹果,香蕉

答案 4 :(得分:0)

我还可以通过以下方法解决它:

let fruit = new Array("peach","orange", "mango", "apple" );
console.log(fruit.toString().toUpperCase());