可以重命名内置的JavaScript函数吗?
我正在尝试将“反向”功能重命名为另一个名称, 但仍然具有相同的功能
答案 0 :(得分:4)
您可以通过在函数原型中创建别名来更改名称
Array.prototype.newreversename = Array.prototype.reverse;
var arr=["abc","sssd"];
console.log(arr.newreversename())
您还可以为新功能创建包装器功能
Array.prototype.newreversefunction = function() {
return this.reverse();
};
var arr=["a","c"];
console.log(arr.newreversefunction())
答案 1 :(得分:3)
这称为猴子修补。 Javascript具有足够的灵活性,可以更改诸如此类的基本内容,但是如果您以此方式修改语言的正常部分,则会破坏其他代码并使其他人无法阅读自己的代码。
Array.prototype.rev = Array.prototype.reverse
> function reverse() { [native code] }
Array.prototype.reverse = null
> null
[1,2,3,4,5].rev()
> [5, 4, 3, 2, 1]
[1,2,3,4,5].reverse()
> "[1,2,3,4,5].reverse is not a function"
答案 2 :(得分:1)
您可以,但是我强烈建议您不要这样做。
正确的方法是从原型(Object.getOwnPropertyDescriptor
)获取方法的属性描述符,然后使用该属性定义新的属性(Object.defineProperty
),然后使用{{ 3}}摆脱上一个:
Object.defineProperty(
Array.prototype,
"thingy",
Object.getOwnPropertyDescriptor(Array.prototype, "reverse")
);
delete Array.prototype.reverse;
console.log([1,2,3].thingy()); // [3, 2, 1]
console.log([1,2,3].reverse()); // Error
答案 3 :(得分:0)
您可以这样做:
Array.prototype.myReverse = Array.prototype.reverse;
delete Array.prototype.reverse;
但是您应该避免这种情况,因为许多库都依赖于反向函数。相反,如果要使用其他名称调用它,只需执行第一行:
Array.prototype.myReverse = Array.prototype.reverse;
答案 4 :(得分:-1)
您可以通过创建别名来更改名称
Array.prototype.slicing = Array.prototype.slice;
var animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slicing(2))