请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于老师提到的「静态方法只能访问静态属性」,如何理解这个只能呢?

因为其实从代码的层面来看,它最终都被转换成了 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')

  }


1 回复 有任何疑惑可以回复我~
  • 提问者 luckept #1
    prototype 本身也是一个特殊的静态对象,这样一来我就彻底明白了,谢谢老师!因为我默认认为只有自己 static 创建的才是静态的属性或方法
    回复 有任何疑惑可以回复我~ 2022-04-04 17:44:32
  • keviny79 回复 提问者 luckept #2
    是的。
    回复 有任何疑惑可以回复我~ 2022-04-04 19:43:13
keviny79 2022-04-04 17:09:19

https://img1.sycdn.imooc.com//szimg/624ab5a908ae348411220765.jpg

同学参见截图,有详细的解释

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信