您好,匿名用户
随意问技术百科期待您的加入

Javascript 修改原型还是新增函数?

0 投票

举一个没什么意义的例子,比如我想在一个字符串前加上cattail_前缀,那么有以下两种方式。

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

var prefix = function(str) {
    return 'cattail_' + str;
};

我的疑问是,应该去修改原型?还是新增函数?它们各有什么优缺点,如何权衡呢?

发这个问题的目的是集思广益,所以没有什么正确答案,希望大家见谅:)

用户头像 提问 2013年 11月21日 @ Lancer 上等兵 (183 威望)
分享到:

1个回答

0 投票

加原型有一个问题是 @kmxz 所说的运行环境限制

另一个更大的问题在于可能会冲突,想想如果你用了两个框架,其中A往String.prototype上加了两个方法,B也加了两个方法,万一其中一个不小心重名了。。。就只能比script标签顺序了。因此很早之前大家就有了类似的约定,干脆大家都不加prototype,免得冲突。
所以若你这个项目比较小只有那么一两个人开发,你用prototype无所谓(因为现代框架基本都不会用),但若是一堆人一起的工程项目,还是方法吧。

JS工程上类似避免冲突的东西还有很多,比如隔离$占用冲突:

(function($) {
    ... // 所有代码都在这里
})(jQuery);

比如隔离方法名/类名冲突:

// 每一个.js文件开头
var Baidu = Baidu || {};
Baidu.utils = Baidu.utils || {};
Baidu.utils.MyClass = function() { ... };

都是为了解决协作框架/代码冲突问题

用户头像 回复 2013年 11月28日 @ Ziggs 上等兵 (345 威望)
提一个问题:

相关问题

0 投票
1 回复 28 阅读
0 投票
1 回复 50 阅读
+1 投票
1 回复 75 阅读
0 投票
1 回复 33 阅读
用户头像 提问 2012年 12月1日 @ Caster 上等兵 (256 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...