例如,我必须将“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/