小火柴的博客笔记 小火柴的博客笔记
首页
学过的习
踩过的坑
想过的事
首页
学过的习
踩过的坑
想过的事
  • 学过的习

    • CSS的样式优先级权重
    • 事件冒泡和事件捕获
    • js模块可以通过两种方式对外暴露函数
    • js中的内存泄漏和内存溢出
    • js作用域链
    • 控制台暴露vue
    • es5常用知识总结
    • es6常用知识总结
    • es7常用知识总结
    • js模块化
    • nodeJs学习
    • node搭建服务器
    • webPack学习
    • js原型对象和原型链的理解
      • 原型对象的概念:
      • 原型链概念:
    • css阻塞与js阻塞
    • ajax的学习
    • 浏览器的重绘与重排
    • 函数防抖与函数节流学习记录
    • 浏览器储存学习
    • React起步
    • React的基本使用
    • React项目搭建
    • vue中attrs和listeners的使用
    • js的精度问题
    • React的状态管理
    • yarn和npm的对比
    • websocket的使用
  • 想过的事

  • 踩过的坑

  • 前端
  • 学过的习
小火柴
目录

js原型对象和原型链的理解

# 原型对象的概念:

  • 原型对象的本质其实是一个Object实例,因为对象沿着原型链最终会指向Object的原型对象。
  • 每个函数都有一个prototype属性,该属性指向的是原型对象
  • 每个实例对象身上都有一个__proto__属性,该属性指向的也是原型对象(隐式原型对象),并且实例的隐式原型对象和构造函数的显示原型对象是全等的。




# 原型链概念:

  • 查找对象的属性的时候现在自身找,如果自身没有沿着__proto__找原型对象,如果原型对象上还没有,继续沿着__proto__,直到找到Object的原型对象对象, 如果还没有找到返回undefined。我们将沿着__proto__查找的链称作为原型链。
  • 原型链则是指,当查询一个对象的属性时,如果对象本身不存在该属性,则会沿着原型链向上查找,直到找到该属性或到达 Object 的原型对象为止。因此,原型链代表着从一个对象到另一个对象的继承关系。

原型的存在主要是为了解决在实例化时,节省内存,可以减少实例化是对象内部的属性或者方法过多,可以将这些属性或者方法放在原型上,实例对象在需要这些属性或者方法时,可以直接调用,js会根据原型链进行查找。

function ProtoF(name,age){
	this.name = name
	this.age = age
	this.showtest=function(){
		console.log('this is show test')
	}
}

ProtoF.prototype.showtest2=function(){
	console.log('this is common way')
}

let obj1 = new ProtoF("zl",'12')
let obj2 = new ProtoF("jhh",'13')

console.log(obj1,obj2)

console.log(obj1.showtest2(),obj2.showtest2())

console.log(obj1.__proto__===ProtoF.prototype)  //注意此处
#JS
webPack学习
css阻塞与js阻塞

← webPack学习 css阻塞与js阻塞→

Theme by Vdoing | Copyright © 2021-2023 X match
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式