我对 framer.js 很陌生,我只是在关注一本名为http://coffeescript-for-framerjs.com/#buy的书
fruits[1].toUpperCase()
它工作正常
fruits.toUpperCase()
在书中,这是水果而不是水果,我都尝试过,但出现错误
现在我知道toUpperCase()是一个字符串方法,因此它不适用于 Array。但是这本书到底在说什么。
我对 framer.js 很陌生,我只是在关注一本名为http://coffeescript-for-framerjs.com/#buy的书
fruits[1].toUpperCase()
它工作正常
fruits.toUpperCase()
在书中,这是水果而不是水果,我都尝试过,但出现错误
现在我知道toUpperCase()是一个字符串方法,因此它不适用于 Array。但是这本书到底在说什么。
为什么:
.toUpperCase()
是的方法String.prototype
,不是Array.prototype
。
在您的情况下正确语法的示例:
var fruits = ['apple', 'orange', 'kiwi']
for (var i = 0; i < fruits.length; i++) {
fruits[i] = fruits[i].toUpperCase();
}
Fruits 是一个数组。toUpperCase 函数不是在数组上定义的,而是在字符串对象上定义的。
因为fruits[1]
指的是你的array
元素类型String
toUpperCase()
只能用于String
类型。
fruits.toUpperCase()
失败的水果是类型Array
如果你想让它以这种方式工作:
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());
橙子、苹果、香蕉
我还能够通过以下方式解决它:
let fruit = new Array("peach","orange", "mango", "apple" );
console.log(fruit.toString().toUpperCase());