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;
}
我想要推送最后一个推送的数组。上面的代码不起作用。
答案 0 :(得分: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
。这意味着你正在成为The Horror of Implicit Globals的牺牲品。声明:
Array.prototype.myUcase = function() {
var i; // <=== Declaration
// ...
答案 1 :(得分:1)
做
fruits.push("hakki");
fruits.myUcase();
,push
返回项目添加后的数组长度。
顺便说一句,除非你知道你在做什么,否则开始修改原生对象的原型可能不是一个好主意。可以通过其他方式获得相同的结果:
fruits = fruits.map(function(str){
return str.toUpperCase();
});
答案 2 :(得分:0)
push
返回更新数组的长度。您无法在其上拨打myUcase
。
答案 3 :(得分: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>
答案 4 :(得分:0)
这是符合您当前方法的替代方案。
Array.prototype.pushUpperCase = function(s) {
this.push(s.toUpperCase());
};
你的调用将是......
fruits.pushUpperCase("hakki");
您是否想要,需要或应该在容器中添加字符串操纵器是另一个问题。