js的类包含
- 静态属性和实例属性
- 静态方法和实例方法
请问什么场景应该把这个属性定义为静态的,什么场景应该为实例的?
请问什么场景应该把这个方法定义为静态的,什么场景应该为实例的?我能想到的是类似于Integer.parse()之类的静态方法,我恍惚能理解静态方法的使用场景,但是,还是没有那种概括性的思路。
感谢大佬~~
js的类包含
请问什么场景应该把这个属性定义为静态的,什么场景应该为实例的?
请问什么场景应该把这个方法定义为静态的,什么场景应该为实例的?我能想到的是类似于Integer.parse()之类的静态方法,我恍惚能理解静态方法的使用场景,但是,还是没有那种概括性的思路。
感谢大佬~~
静态属性在 new 构建之前就可以使用,我想到的场景就是可以作为全局属性使用,或者说是配置文件
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...
class Icon {
static urlPrefix = 'xxx' // 静态属性
// 内部可以通过 this.constructor.urlPrefix 获取静态属性
}
Icon.urlPrefix = 'xx' // 可以在 new 之前配置
const A = new Icon('a')
const B = new Icon('b')
我在这个项目中就用到了静态属性 https://xy-ui.codelabo.cn/components/icon#%E9%9D%99%E6%80%81%...
每个图标都是一个实例化的对象,所以在 new 之前设置静态资源地址就非常合适
用无状态和有状态能区分。
有时候静态对象看起来是有状态的,如配置相关,但对整个服务的生命周期来看,静态对象的状态是固定的,这也属于无状态。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
首先,js的类就是原型链的语法糖,就是为了实现继承用的。
静态的东西就是只有类需要的,实例不需要的,也就是不需要继承的。
不继承的东西,在Java里面需要一个类来“承载”它,比如工具类,里面都是静态方法。比如自己写的常量池,里面都是静态属性。
js并不完全是Java的那套面向对象的思路。js的那些不继承的方法和属性,不需要类来包装。这就是为什么很难想出它的使用场景,因为就没什么用。
不需要继承的方法和属性,声明之后导出就好了。
如果放在类里面,写成静态的,再通过类去访问,只是提升了语义化而已,有点namespace的感觉,很大型的项目可能需要,正常情况没有使用场景。