请问老师 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)
00
相似问题