请问老师 Typescript 中如何访问原型对象呢

来源:2-12 【TS类源码】详解 TS 类底层源码【原生ES5语法】

猿力

2021-09-08

如图
如图,TS中暂时无法使用__proto__

写回答

1回答

keviny79

2021-09-08


 1. TS 不允许直接用对象和函数来获取__proto__属性, 因为 TS 具有了面向对象的思想,自然不希望过多的纳入JS的传统继承模式.

 2. 那 TS 如何获取原型继承之上的成员呢?

  2.1 首先在 TS 类和继承底层封装了原型继承,上层直接对象调用父类即可,

   就 不允许直接用__proto__属性了


  2.2 但如果我们还想访问obj原型之上的属性,怎么办?

let obj = { name: "wangwu", age: 23 }

 比如我们想访问Object.prototype中的成员,下面判断对象是否存在age属性

  方法1:  尽管 TS 不允许直接用对象和函数来获取__proto__属性,

  但依然隐式的通过__proto__找到了Object.prototype上的hasOwnProperty

console.log(obj.hasOwnProperty("age"))

 方法2:下面这种效率更高,直接用Object.prototype上的原型

let result = Object.prototype.hasOwnProperty.call(obj, "age")

console.log("result:", result)


0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程