美文网首页
TypeScript 里的访问修饰符 private、prote

TypeScript 里的访问修饰符 private、prote

作者: 7b7d23d16ab5 | 来源:发表于2021-05-21 21:55 被阅读0次

Typescript的private_protected_public访问修饰符是语法糖

  • 测试类 class
class TestA {
  private funcA() {
    console.log('==========funcA')
  }
  protected funcB() {
    console.log('=========funcB')
  }
  public funcC() {
    console.log('==========funcC')
  }
}
  • 测试功能
    // ## typescript 的 private protected public 只是个语法糖,对属性和函数没有任何特征改变

    const funcAKey = 'funcA'
    const funcBKey = 'funcB'
    const funcCKey = 'funcC'

    const testA = new TestA()
    const fA = testA[funcAKey]
    const fB = testA[funcBKey]
    const fC = testA[funcCKey]

    // 这句话 ts 会标红线报错,但是根本不影响代码执行,代码执行实际上是允许的,就等同于下面的 fA()
    testA.funcA()
    testA.funcB()
    testA.funcC()

    console.log('-----------')

    fA()
    fB()
    fC()

    console.log('-----------')

    console.log('testA[funcAKey] => ', fA)
    console.log('testA[funcBKey] => ', fB)
    console.log('testA[funcCKey] => ', fC)

    console.log('-----------')

    const testAproto = Object.getPrototypeOf(testA)
    // 查看三个函数的属性描述
    console.log('Descriptor(testA.funcA) => ', Object.getOwnPropertyDescriptor(testAproto, 'funcA'))
    console.log('Descriptor(testA.funcB) => ', Object.getOwnPropertyDescriptor(testAproto, 'funcB'))
    console.log('Descriptor(testA.funcC) => ', Object.getOwnPropertyDescriptor(testAproto, 'funcC'))

    console.log('**********************************')
  • 输出结果
==========funcA
=========funcB
==========funcC
-----------
==========funcA
=========funcB
==========funcC
-----------
testA[funcAKey] =>  ƒ funcA() {
    console.log("==========funcA");
  }
testA[funcBKey] =>  ƒ funcB() {
    console.log("=========funcB");
  }
testA[funcCKey] =>  ƒ funcC() {
    console.log("==========funcC");
  }
-----------
Descriptor(testA.funcA) =>  {writable: true, enumerable: false, configurable: true, value: ƒ}
Descriptor(testA.funcB) =>  {writable: true, enumerable: false, configurable: true, value: ƒ}
Descriptor(testA.funcC) =>  {writable: true, enumerable: false, configurable: true, value: ƒ}
**********************************

相关文章

网友评论

      本文标题:TypeScript 里的访问修饰符 private、prote

      本文链接:https://www.haomeiwen.com/subject/sysgjltx.html