JavaScript学习笔记—原型对象
1. 访问一个对象的原型对象
(1)对象.__proto__
(2)Object.getPrototypeOf(对象)
一般用第二种,第一种不安全
2. 原型对象中的数据
(1)对象中的数据(属性、方法等)
(2)constructor(对象的构造函数)
注意: 原型对象也有原型,这样就构成了一条原型链,根据对象的复杂成都不同,原型链的长度也不同
p对象的原型链:p对象 --> 原型 --> 原型 --> null
obj对象的原型链:obj对象 --> 原型 --> null
3. 原型链
- 读取对象属性时,会优先读对象自身属性
如果对象中有,则使用,没有则去对象的原型中寻找
如果原型中有,则使用,没有择取圆形的原型中寻找
直到找到Object对象的原型(Object的原型没有原型(为null))
如果依然没有找到,则返回undefined - 原型链,是找属性的链,找不到会返回undefined
- 作用域链,是找变量的链,找不到会报错
class Person { name = "孙悟空"; age = 18; sayHello(){ console.log("Hello,我是", this.name); } } const p = new Person(); console.log(p); /* 访问一个对象的原型对象 (1)对象.__proto__ (2)Object.getPrototypeOf(对象) 一般用第二种,第一种不安全 */ //console.log(p.__proto__); console.log(Object.getPrototypeOf(p) === p.__proto__); const obj = {};
4. 原型的作用
所有的同类型对象它们的原型对象都是同一个,也就意味着,同类型对象的原型链是一样的。
原型的作用:
- 原型就相当于是一个公共的区域,可以被所有该类实例访问
- 可以将该类实例中所有的公共属性(方法)统一存储到原型中,这样我们只需要创建一个属性,即可被所有实例访问
在对象中有些直是对象独有的,像属性(name, age, gender等)每个对象都应该有自己的值,但是有些值对于每个对象来说都是一样的,像各种方法,对于一样的值没必要重复创建。
JS中集成就是通过原型来实现的,当继承时,子类的原型就是一个父类的实例。
5. 修改原型
- 通过类的prototype属性来访问或修改实例的原型
class Person { name = "孙悟空"; age = 18; sayHello(){ console.log("Hello,我是", this.name); } } Person.prototype.fly = () => { console.log("我在飞~~~"); }
分类:
JavaScript
标签:
JavaScript学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理