在扩展javascript功能时,Number和Math函数之间有什么区别?

时间:2011-03-22 02:40:06

标签: javascript

我通过创建一些对我有用的函数扩展了javascripts的核心功能。今天为函数创建测试用例时,我开始想知道哪种方式最适合扩展整数的javascripts功能。使用Number.prototype或Math对象。

Number.prototype.sqr = function () {
    return this * this;
};
var test1 = (6).sqr();
alert("This is 36: " + test1);

OR

Math.sqr = function (num) {
    return num * num;
};
var test2 = Math.sqr(6);
alert("This is 36: " + test2);

这两个示例可以针对您要创建的任何整数类型函数进行切换,应该使用哪个?

2 个答案:

答案 0 :(得分:3)

我选择Math.sqr,因为它不会强迫代码的读者思考“这个有sqr成员的东西是什么?”。当然,在一个真实的程序中,你不会看到(6).sqr()可能会让它更清楚发生的事情,而是一些变量。

答案 1 :(得分:1)

无论你喜欢什么语法都没关系。当你开始搞乱Array.prototype或( GASP )Object.prototype时,情况并非如此。

为了保持一致性,我更喜欢修改数学,因为其他内容如pow,sqrt,sin等都在那里。