萌新想请教一下对比static有什么好处
我的是结合了你的A方案和B方案。A方案使用舒服,但是没有语法提示;B方案有语法提示,但是使用时需要写括号。
懒得写static。有些工具类可能有很多属性和方法,那就要写很多static。
第二种比较好 有强提示的 第一种提示没有那么强, 方法不是最先显示的
但在调用的时候每次都instance更难看
萝卜青菜各有所爱
像是java过来的
很好很实用
我也有个骚操作
class Singleton {
protected constructor() { }
private static inst = null;
protected static getInstance() {
this.inst = this.inst || new this();
return this.inst;
}
}
class A extends Singleton {
public static get Inst(): A { return this.getInstance() }
}
class B extends Singleton {
public static get Inst(): B { return this.getInstance() }
}
多夸夸楼主,不容置疑
使用vscode的用户片段不好吗?提高效率啊
"prefix": "instance",
"body": [
"export default class ${1:NewClass} {",
" ",
" private static _instance : ${1:NewClass} = null",
" public static get instance() : ${1:NewClass} {",
" return this._instance || (this._instance = new ${1:NewClass}())",
" }",
" $0",
"}",
],
"description": "创建一个单例类"
在ES6前, 前端就使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范的模块化库, 而像seaJS是基于CMD规范的模块化库, 两者都是为了为了推广前端模块化的工具;
** 现在ES6自带了模块化, 也是JS第一次支持module, 在很久以后 ,我们可以直接作用import和export在浏览器中导入和导出各个模块了, 一个js文件代表一个js模块;**
现代浏览器对模块(module)支持程度不同, 目前都是使用babelJS, 或者Traceur把ES6代码转化为兼容ES5版本的js代码;
ES6的模块化的基本规则或特点:
1:每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象;
2:每一个模块内声明的变量都是局部变量, 不会污染全局作用域;
3:模块内部的变量或者函数可以通过export导出;
4:一个模块可以导入别的模块
对对对 
不太明白为什么一定这类单例
export default new Instance() 不行?
可以的,工具类我一直用,但是有时候需要在模块加载时使用,例如同一个脚本class下方使用,这时候就需要继承单例基类并导出单例
