javascript - 在将函数定义为 Object.prototype 扩展或只是函数之前要考虑什么?

标签 javascript performance function prototype

例如,我必须将“foo”添加到字符串中。

所以我至少有两条路要走。

首先,我可以实现 String.prototype.foo:

String.prototype.foo = function() {
    return this + 'foo';
};

var s = 'str';
var data = s.foo(); // "strfoo"

另一种方式:

function foo(str) {
    return str + 'foo';
}

var s = 'str';
var data = foo(s); // "strfoo"

两个看起来都很漂亮。但是在选择第一个或第二个实现之前我是否应该考虑任何“水下岩石”?是否有任何重要原因,例如效率和性能?

最佳答案

第一个扩展了 String 的功能。 如果您有一类对象并且想要向其中添加新行为,请使用此解决方案。

第二个更多的是效用函数。 另请注意,您还可以将第二个 foo 应用于不是字符串的变量,因此如果您想将使用限制为字符串参数,还应该测试参数的类型。

关于javascript - 在将函数定义为 Object.prototype 扩展或只是函数之前要考虑什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782752/

相关文章:

javascript - 实现 AJAX 后 PHP 验证不起作用

mysql - 选择 2 以下列的最大值 mysql

Javascript - 如何防止嵌套 For 循环期间阻塞?

c++ - 如何使用递归使用嵌套循环并检查 C++ 中的数字总和

javascript - 如何处理 javascript 中动态更改深层嵌套对象的 'undefined' 错误

php - Drupal:向 Drupal.settings 添加 js 函数回调

javascript - 根据窗口大小消除视差

asp.net-mvc - ASP.NET MVC session 状态使用状态分区、MongoDB 或 Memcached 或...?

mysql - SQL - 使用的 select 语句具有不同的列数

sql - 为什么我的函数返回逗号分隔列表而不是行 (SQL Server)?