javascript - 在 JavaScript 中制作原型(prototype)时首选哪种方法?

标签 javascript prototype

这是一个人为的例子:

我想将两个数字相除,我需要为此编写一个方法。我可以这样写:

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因为代码更好。

最佳答案

第一种方法没有缺点(除了语法不同)

在第二种方法中,你冒着实现的风险,如果它成为 NumberMath 对象或具有相同函数名称的其他第三方库的一部分怎么办:)

虽然通常是为了避免它,但还是这样做了:

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/

相关文章:

javascript - 在不更改 url 的情况下转到 anchor

javascript - 表单 block 上的 submit() 吗?

java - 为什么 C 需要原型(prototype)函数而 Java 不需要?

javascript:创建一个对象,该对象继承自多个构造函数的原型(prototype)

javascript - 原型(prototype)上的事件监听器

javascript - 当为 fun 调用提供的 thisArg 值是 Function.prototype 对象时,fun.call 如何工作?

javascript - 解决 iPad 上 Mobile Safari 中第 0 个 <select> 选项错误的解决方法?

javascript - 在 ajax 调用的结果中查找值

javascript - 使用 Javascript 作为 XSLT 转换的一部分时如何传递参数

javascript - 在 div 中查找任何类型的第一个可聚焦项目