项目中需要封装一些js公共方法,
第1种做法:
function xx() {} function yy() {}
第2种做法:
var a = new A(); A.prototype.xx=function () {}; A.prototype.yy=function () {};
这两种方法哪个好,各自使用场景都是啥?谢谢
认证0级讲师
第一种方式不可取,直接定义到全局,很容易造成全局变量的污染,特别是多人开发项目中,很容易造成变量的冲突,并且随着项目的不断增大,可维护性会越来越低。
第二种方式你的写法本身是有问题的,应该是
function A () {} A.prototype.xx=function () {}; A.prototype.yy=function () {};
调用的时候需要例如这样
var globalMethods = new A(); globalMethods.xx();
整体来说比较繁琐,并且需要new一个对象,也有不必要的性能开销(我没见过这么写的)
一般的做法是定义一个对象,并且规定好命名空间(团队协作时很有用)
var YourappnameGlobalMethods = { xx: function () {}, yy: function () {} } YourappnameGlobalMethods.xx();
当然最好是使用模块化编程
methods.js
var methods = { xx: function () {}, yy: function () {} } module.exports = methods;
调用
var methods = require('methods.js'); methods.xx()
这样就不会污染全局作用域,命名冲突等问题了。
我觉得如果只是封装一些方法的话,可以直接放在外面,也可以挂到一个util对象上,通过命名空间来避免重名等问题,但是放在原型链上就没有必要了吧,增加了复杂度而且速度会降低,js本身就都是对象,不一定非要通过new来构造对象,对于有很多helper的情况下:
var util = {} util.xx = function() {} util.yy = function() {}
感觉上面这样子可能更好,也方便复用
第一种方式不可取,直接定义到全局,很容易造成全局变量的污染,特别是多人开发项目中,很容易造成变量的冲突,并且随着项目的不断增大,可维护性会越来越低。
第二种方式你的写法本身是有问题的,应该是
调用的时候需要例如这样
整体来说比较繁琐,并且需要new一个对象,也有不必要的性能开销(我没见过这么写的)
一般的做法是定义一个对象,并且规定好命名空间(团队协作时很有用)
当然最好是使用模块化编程
methods.js
调用
这样就不会污染全局作用域,命名冲突等问题了。
我觉得如果只是封装一些方法的话,可以直接放在外面,也可以挂到一个util对象上,通过命名空间来避免重名等问题,但是放在原型链上就没有必要了吧,增加了复杂度而且速度会降低,js本身就都是对象,不一定非要通过new来构造对象,对于有很多helper的情况下:
感觉上面这样子可能更好,也方便复用