1
Array.prototype.myUcase=function()
{
    for (i=0;i<this.length;i++)
    {
        this[i]=this[i].toUpperCase();
    }
}

var fruits=["banana","sermnb","kiwi"];

function myFunction()
{
    fruits.push("hakki").myUcase();
    var x=document.getElementById("demo");
    x.innerHTML=fruits;
}

我想将最后一个被推送的数组大写。上面的代码不起作用。

4

5 回答 5

3

这一行:

fruits.push("hakki").myUcase();

...调用push数组,然后尝试myUcase调用push. 但是 的返回值push是一个数字(数组的新长度),而不是对数组的引用。

目前尚不清楚您要做什么,但您可以在推送之前将字符串设为大写:

fruits.push("hakki".toUpperCase()); // I assume the string is actually in a variable.

...或者myUcase稍后再调用,当你完成推送时:

fruits.myUcase();
x.innerHTML=fruits;

旁注:看起来您并没有在函数i的任何地方声明。这意味着你正在成为隐式全局恐怖的myUcase牺牲品。声明它:

Array.prototype.myUcase = function() {
    var i; // <=== Declaration
// ...
于 2013-06-08T10:36:37.150 回答
1

fruits.push("hakki");
fruits.myUcase();

aspush返回添加项目后数组的长度。

顺便说一句,除非您知道自己在做什么,否则开始修改本机对象的原型可能不是一个好主意。可以通过其他方式实现相同的结果:

fruits = fruits.map(function(str){
    return str.toUpperCase();
    });
于 2013-06-08T10:36:58.107 回答
0

这是与您当前方法一致的替代方法。

Array.prototype.pushUpperCase = function(s) {
    this.push(s.toUpperCase());
};

你的调用将是......

fruits.pushUpperCase("hakki");

您是否想要、需要或应该将字符串操纵器添加到容器中是另一个问题。

于 2013-06-08T10:59:56.153 回答
0

push返回更新数组的长度。你不能调用myUcase它。

于 2013-06-08T10:36:14.133 回答
0

如果您需要“UCase”中的“Last”条目,则:

<script>
    Array.prototype.myUcase=function()
    {
    //for (i=0;i<this.length;i++)
   // {
    //this[i]=this[i].toUpperCase();
   // }
this[this.length-1]=this[this.length-1].toUpperCase();
    }

    var fruits=["banana","sermnb","kiwi"];

    function myFunction()
    {
    fruits.push("hakki");
    fruits.myUcase();
    var x=document.getElementById("demo");
    x.innerHTML=fruits;
    }
   </script>
于 2013-06-08T10:40:00.947 回答