javascript – 什么时候应该使用自己的命名空间,何时应该扩展本机的js对象?

我正在重构代码.我无法确定如何实现几个实用功能.具体来说,如果某些功能在我的个人命名空间中更好,或直接扩展js Objects.

扩展本机JavaScript对象的示例

(这是适当的术语吗?).

String.prototype.prettyDate = function(){
  return (this.substr(5,2) + '/' + this.substr(8) + '/' + this.substr(0,4));
}
var myString = "2010-12-27";
//logs 12/27/2010
console.log(myString.prettyDate);

使用我自己的命名空间的例子

var myNamespace = (function(){
   var my = {};
   my.prettyDate = function ( dateStr ){
      return (dateStr.substr(5,2) + '/' + dateStr.substr(8) + '/' + dateStr.substr(0,4));
   }
return my;
}());
var pretifiedDate = myNamespace.prettyDate('2010-12-27');
//logs 12/27/2010
console.log(pretifiedDate);

需要考虑的问题

什么时候可以有效地插入本机JavaScript对象?
>如何知道实用程序在我自己的命名空间中是否更好?

解决方法

几乎从来没有,因为:

可能与其他图书馆冲突

b /扩展函数在运算符中作为属性进行迭代,这会产生问题,除非被hasOwnProperty(不常用)过滤掉,

你可以为小型单脚本作品提供理由,但只有当你确定没有人时,永远不会尝试在某处重复使用该代码.在这种情况下,只能用于跨越代码多个模块的功能.扩展字符串的trim() – 好的,扩展String与prettyDate() – 怀疑,扩展Object与displayAsPageHeader() – 可怕.>所以,几乎总是.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...