【JS】关于原型/原型链

本文会讲解什么是原型,什么是原型链,以及查找原型的方法,最后会实现一个函数:判断某对象是否有某属性。

定义

原型:函数都有prototype属性,称作原型/原型对象

  • 原型可以放一些方法和属性,共享给实例对象使用
  • 原型可以继承

原型链:对象都有_proto_属性,这个属性指向它的原型对象,原型对象也是对象,也有_proto_属性,指向原型对象的原型对象,这样一层一层形成的链式结构称为原型链,最顶层找不到就返回null

查找原型

Object.getPrototyeOf()方法获取原型(标准方法)

javascript 复制代码
const obj = {};
const prototype = Object.getPrototypeOf(obj);
console.log(prototype === Object.prototype); // true

实现判断对象是否有某属性的函数

该函数有两种使用,根据需求来看,是找对象自身有的属性,还是周对象及其原型链有的属性。

javascript 复制代码
function hasProperty(obj, prop, checkPrototype = false) {
    if (checkPrototype) {
    //在原型链上找就用in运算符
        return prop in obj;
    }
    //在对象自身找就用hasOwnProperty()方法
    return obj.hasOwnProperty(prop);
}

const myObj = {
    key: 'value'
};
console.log(hasProperty(myObj, 'key')); // true
// true,因为 toString 是 Object.prototype 上的属性
console.log(hasProperty(myObj, 'toString', true)); 

以上就是对原型的讲解,欢迎指正!

相关推荐
冒险的豆子4 天前
JS 原型链 通俗易懂 解释说明(类比 关系)
开发语言·javascript·原型模式
吠品12 天前
箭头函数为什么不能 new
开发语言·javascript·原型模式
2603_9658966217 天前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
YYYing.20 天前
【设计模式系列 (五) 】原型模式
开发语言·后端·设计模式·原型模式·c/c++
羞儿1 个月前
【读点论文】Overall positive prototype for few-shot open-set recognition
原型模式·小样本学习·特征优化·开集学习
liangshanbo12151 个月前
手写 Function.prototype.call 与 Function.prototype.apply 面试题满分答案
开发语言·javascript·原型模式
江畔柳前堤1 个月前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
艾伦野鸽ggg1 个月前
JavaScript 原型链与原型对象详解
javascript·原型模式
AgentMaster1 个月前
元数据、血缘、质量、安全四大模块能力拆解,数据治理方案对比:4 种技术路线深度评测
大数据·数据库·数据仓库·人工智能·原型模式
江畔柳前堤2 个月前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式