当前位置:网站首页>08-JS对象、原型及原型链
08-JS对象、原型及原型链
2022-08-11 05:17:00 【CapejasmineY】
一、对象
1、创建对象
字面量方式:
var obj={
name: "liuyan",
}
内置构造函数创建对象:
var obj = new Object()
obj.name='liuyan'
obj.aage=18
工厂函数创建
function createObj(){
var obj = {}
obj.name = 'liu'
obj.han= function(){}
return obj
}
var obj = createObj()
自定义构建函数
function CreateObj(){ #首字母大写规范
#this指向当前实例
this.name = 'Jack'
this.age = 18
this.sayhi=function(){}
}
var obj1 = new createObj()
#函数内部不需要写return
#如果写了,return简单数据类型没有用,return复杂类型数据会覆盖构造的属性
2、自定义构造函数的不合理性:
使用构造函数创建的对象p1和p2:
p1 不等于 p2 ——>两个不同的对象
p1.sayhi 不等于p2.sayhi ——>两个不同的函数
这样会造成创建一次对象,就会有一个一摸一样的函数占用空间
3、解决自定义构造函数不合理问题
原型
每一个构造函数天生自带prototype属性,是一个对象数据类型。
创建的对象自带__proto__属性,指向所属构造函数的protype。在访问对象自己的属性时,如果没有找到,就会去__proto__上查找,从而查询所属构造函数的prototype
将公共方法属性添加到构造函数原型上,其所有对象创建后,通过自己__proto__属性指向的构造对象的prototype原型上去获取,不需要每个对象都创建相同资源。可以使用对象的操作语法向里面添加内容
//构造函数
function Person(){
}
//构造函数原型上添加sayhi函数
Person.prototype.sayhi=function(){}
//创建对象
h1=new Person()
h2=new Person()
//调用对象中的sayhi函数
h1.sayhi
console.log(h1.saihi === h2.sayhi) #true
属性:直接写在构造函数体内
方法:写在构造函数原型上
原型链
对象是Object的实例,所有的原型链都会汇集此处
函数是Function的实例
Object的prototype是顶级原型,proto__值为null
函数访问机制:
1、首先查找自己的对象成员,如果有直接使用
2、如果没有,查询__proto ,也就是自己所属的构造函数的prototype对象
3、如果还是没有,则查询所属构造函数prototype对象的__proto__,也就是Object的prototype对象
4、如果没有找到则返回null
边栏推荐
- RK3399上的Tengine实践笔记
- leetcode21. Merge two ordered linked lists
- (1) Docker installs Redis in practice (one master, two slaves, three sentinels)
- 函数怎么用
- imx6 yocto编译备忘
- Blender 初教程
- Redis - Data Types (Basic Instructions, String, List, Set, Hash, ZSet, BitMaps, HyperLogLog, GeoSpatial) / Publish and Subscribe
- 开炮,开炮
- 在项目中使用flex布局的justify-content:space-around;遇到的问题,(数量为单数)
- 信息学奥赛
猜你喜欢
随机推荐
搭建PX4开发环境
leetcode21.合并两个有序链表
05-JS中的BOM和DOM
(3) How Redis performs stress testing
Introduction of several ways to initialize two-dimensional arrays in C language (private way to initialize large arrays)
第6章 分支语句和逻辑运算符
吃瓜教程task05 第6章 支持向量机
task06 PyTorch生态
Flask framework learning: template rendering and Get, Post requests
ClionIDE compiles by specifying the compiler
C语言学习记录--变量基本类型和内存大小
博客帮助文档
Django--20 implements Redis support, context, and interaction of context and interface
【win10+cuda7.5+cudnn6.0安装caffe②】安装Visual Studio 2013和caffe
pytorch矩阵运算问题
selenuim使用cookie登录京东
Django--20实现Redis支持、上下文以及上下文和接口的交互
C language file operation - detailed explanation of data file type, file judgment, and file buffer
labelme工具,对类别标注,再进行细致的分割
(2) Construction of a real-time performance monitoring platform (Grafana+Prometheus+Jmeter)