老师,想请教一个关于hasOwnProperty的问题

来源:5-21 【TS继承源码】逐行深剖,手写TS继承JS源码-3

目訫

2022-03-16

老师,我理解Object.prototype.hasOwnProperty.call(People, key)是可以检测该属性是否绑定在People对象上面,那么为什么不直接使用People.hasOwnProperty(key)

写回答

1回答

keviny79

2022-03-16

function People () {

  this.name = "daha"

}

People.xx = "sdf"

// 主要是查找hasOwnProperty上的性能考虑

// 方法1:向上一级Function.prtotype->再上一级 Object.prototype 原型查找 hasOwnProperty,

//  需要损耗一点性能

console.log(People.hasOwnProperty("xx"))//true


// 方法2: 向上一级 Object.prototype原型查找hasOwnProperty,需要损耗一点性能

console.log(People.prototype.hasOwnProperty.call(People, "xx"));//true


// 方法3: 向上一级 Object.prototype原型 查找hasOwnProperty,需要损耗一点性能

console.log(Function.prototype.hasOwnProperty.call(People, "xx"));//true

// 方法4:

console.log(Object.prototype.hasOwnProperty.call(People, "xx"));//true

当然,前端这点性能和 后端服务器千万级高并发对性能的影响相比,其实非常小甚至可以忽略不计,不过也是考虑进去了才这样写。

0
0

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

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

871 学习 · 425 问题

查看课程