这是一个人为的例子:
我想将两个数字相除,我需要为此编写一个方法。我可以这样写:
function divide(dividend,divisor) {
return dividend/divisor;
};
//Assign the result of the divide function to an element on the page.
$(".firstanswer").html(divide(6,2));
我也可以这样写:
Number.prototype.dividedBy = function (divisor) {
var dividend = this;
return dividend/divisor;
};
var six = 6;
var two = 2;
$(".secondanswer").html(six.dividedBy(two));
两种方法都会产生相同的答案,所以我想知道的是:
使用这两种方法的优点或缺点是什么。是否存在显着的性能(加载/运行时间)差异?就内存影响而言,一个比另一个更可重用吗?易理解性如何?最终,对于像这样简单的例子,这重要吗?
我也created a Fiddle因为代码更好。
最佳答案
第一种方法没有缺点(除了语法不同)
在第二种方法中,你冒着实现的风险,如果它成为 Number
或 Math
对象或具有相同函数名称的其他第三方库的一部分怎么办:)
虽然通常是为了避免它,但还是这样做了:
Number.prototype.dividedBy = Number.prototype.dividedBy || function (divisor) {
var dividend = this;
return dividend/divisor;
};
这样,你说,如果已经存在该功能,请使用其他创建我自己的功能。
有关更多详细信息,请查看(@Kangax 一如既往的另一篇精彩文章)
关于javascript - 在 JavaScript 中制作原型(prototype)时首选哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11195731/