关于老师提到的「静态方法只能访问静态属性」,如何理解这个只能呢?
来源:4-5 【单件设计模式关联的深层技能】静态属性9大规则+静态方法-1

luckept
2022-04-04
因为其实从代码的层面来看,它最终都被转换成了 JS 代码。
这是否就意味着在静态方法中可以通过 this.prototype 访问到类的原型对象空间呢,那么这样一来即使外部不能通过创建新的实例去访问原型对象,也可以通过类暴露出的静态方法去操作原型对象空间。
那么要如何去理解静态方法只能访问静态属性呢?它也是能够通过 「this.prototype.原型对象空间上的方法」去访问原型对象空间的呀
这是否只是一种主观意义上的描述呢?为了让同学们更好的理解静态成员而做的一种定义呢?
以下是关于此问题的代码补充及运行截图
interface ItfcStorage {
[key: string]: any
}
class LStorage {
storage!: ItfcStorage
setstorage(key: string, val: string) {
if (!this.storage) this.storage = {}
this.storage[key] = val
}
getstorage(key: string) {
console.log(this.storage)
return this.storage[key]
}
static setItem(key: string, val: string) {
this.prototype.setstorage(key, val)
}
static getItem(key: string) {
return this.prototype.getstorage(key)
}
}
LStorage.setItem('name', 'Tom')
const result = LStorage.getItem('name')
console.log('result=>', result)
2回答
-
路过同学了解下--老师新课程全栈当当书城优惠倒计时2天,截至2022年7月19号平台将课程恢复原价,有意向同学趁早出手【此条非问题解答,见谅!】
class MyLocalStorage {
count3: number = 30
// 静态属性和对象属性[实例属性】是类中两大成员
static localstorage: MyLocalStorage = new MyLocalStorage() //静态引用属性
static count: number = 3 //静态的基本类型属性
public static Test() {
//1. 首先 【静态方法只能访问静态属性和静态方法」 这句话完全正确, 视频忘记加上静态方法几个字
//2. prototype本身也是一个特殊的静态对象属性,
// 静态方法调用的是prototype这个静态对象属性
// 而后面的go()这个实例方法是prototype对象属性对象调用到的, 这和静态方法本身无关了
//this.prototype.go()
//3.就好比一个静态的实例对象可以调用到实例方法go()方法一样,
// go()是实例对象localstorage调用到的
this.localstorage.go()
//console.log('Abc')
}
122022-04-04 -
keviny79
2022-04-04
同学参见截图,有详细的解释
10
相似问题