原型、原型链、判断数据类型

目录

作用

原型链

引用类型:__proto__(隐式原型)属性,属性值是对象函数:prototype(原型)属性,属性值是对象

Function:本身也是函数

相关方法

person.prototype.isPrototypeOf(stu)

Object.getPrototypeOf(object)替换已不推荐的object._ _ proto _ _ 

Object.create(instance) 以一个现有对象作为原型,创建一个新对象

Object.hasOwn(obj,属性):判断是否为自有属性

应用

new

函数装饰器:在一个函数 执行前 或 执行后 添加额外的逻辑

判断数据类型

运算符

typeof:判断 基本数据类型

typeof null=Object 类型标签均为000

实例 instanceof 构造函数:判断原型链,和isPrototypeOf

方法

构造函数.prototype.isPrototypeOf(实例) :判断原型链

(数据).constructor === 数据类型:不包含继承类型

显示:toString,valueOf 除了null,undefined

valueOf:this 值转换成对象。除了Date都是返回数据本身

console.log

toString:重写对象的类型转换。console.log


作用

原型被定义为给其它对象提供共享属性的对象,函数的实例可以共享原型上的属性和方法

原型链

引用类型:__proto__(隐式原型)属性,属性值是对象
函数:prototype(原型)属性,属性值是对象

const o = {a: 1,b: 2,// __proto__ 设置了 [[Prototype]]。它在这里被指定为另一个对象字面量。__proto__: {b: 3,c: 4,__proto__: {d: 5,},},
};// { a: 1, b: 2 } ---> { b: 3, c: 4 } ---> { d: 5 } ---> Object.prototype ---> nullconsole.log(o.d); // 5

Function:本身也是函数

console.log(Function.prototype === Function.__proto__); // true

Function 本身是一个函数。而所有函数都是Function 的实例。所以 Function是Function的实例

相关方法

person.prototype.isPrototypeOf(stu)

Object.getPrototypeOf(object)替换已不推荐的object._ _ proto _ _ 

Object.create(instance) 以一个现有对象作为原型,创建一个新对象

Object.hasOwn(obj,属性):判断是否为自有属性

应用

new

var a=1;
function fn1(){var a=2;console.log(this.a+a);
}
//f1并没有被作为对象的方法调用, this 指向全局对象,在浏览器中是 window
f1();//3 function fn2(){var a=10;fn1();
}
//在 fn2 函数内部调用 fn1 函数,但是 fn1 函数内部的 this 仍然指向全局对象 window,因为 fn1 并没有被作为方法调用。
fn2();//3 var fn3=function(){this.a=3;
}
fn3.prototype={a:4
}
var fn33=new fn3();
fn1.call(fn33)
//5

函数装饰器:在一个函数 执行前 或 执行后 添加额外的逻辑

Function.prototype.before=function(beforefn){return ()=>{beforefn.apply(this,arguments)return this.apply(this,arguments)}
}
Function.prototype.after=function(afterfn){return ()=>{var res=this.apply(this,arguments)afterfn.apply(this,arguments)return res;}
}var func=function(){console.log(1)
}.before(function(){console.log(2)
}).after(function(){console.log(3)
})
func()//213

判断数据类型

运算符

typeof:判断 基本数据类型

typeof null=Object 类型标签均为000

实例 instanceof 构造函数:判断原型链,和isPrototypeOf

Object.prototype.isPrototypeOf({})// true
{} instanceof Object// true
Object instanceof Object//true
Function instanceof Function//true

方法

构造函数.prototype.isPrototypeOf(实例) :判断原型链

(数据).constructor === 数据类型:不包含继承类型

显示:toString,valueOf 除了null,undefined

valueOf:this 值转换成对象。除了Date都是返回数据本身

console.log

在这里插入图片描述

toString:重写对象的类型转换。console.log

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++项目:仿mudou库one thread one loop式并发服务器实现

目录 1.实现目标 2.HTTP服务器 3.Reactor模型 3.1分类 4.功能模块划分: 4.1SERVER模块: 4.2HTTP协议模块: 5.简单的秒级定时任务实现 5.1Linux提供给我们的定时器 5.2时间轮思想: 6.正则库的简单使用 7.通用类型any类型的实现 8.日志宏的实现 9.缓冲区…

FFmpeg 基础模块:下载编译与安装、常用命令、处理流程

FFmpeg源码下载 我们会逐步分析作为 API 用户我们需要了解的 FFmpeg 中的重要模块,比如 AVFormat 模块、AVcodec 模块、AVfilter 模块、swscale 模块、swresample 模块。 在具体讲解如何使用 FFmpeg 的 API 之前,为了方便你查看 API 对应的代码&#x…

数据指标体系

一、初识指标体系构建 1.1 什么是指标体系 指标体系是一个比较抽象的概念,指标体系是衡量、评估和监测特定领域或目标的系统化指标的集合。它由多个指标组成,这些指标可以用于衡量和评估所关注领域或目标的各个方面。指标体系通常被用于监测和评估业务绩…

【网络安全---ICMP报文分析】Wireshark教程----Wireshark 分析ICMP报文数据试验

一,试验环境搭建 1-1 试验环境示例图 1-2 环境准备 两台kali主机(虚拟机) kali2022 192.168.220.129/24 kali2022 192.168.220.3/27 1-2-1 网关配置: 编辑-------- 虚拟网路编辑器 更改设置进来以后 ,先选择N…

EasyExcel的源码流程(导入Excel)

1. 入口 2. EasyExcel类继承了EasyExcelFactory类,EasyExcel自动拥有EasyExcelFactory父类的所有方法,如read(),readSheet(),write(),writerSheet()等等。 3. 进入.read()方法,需要传入三个参数(文件路径…

力扣 -- 279. 完全平方数(完全背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int numSquares(int n) {const int INF0x3f3f3f3f;int msqrt(n);//多开一行&#xff0c;多开一列vector<vector<int>> dp(m1,vector<int>(n1));//初始化第一行…

你的游戏项目有这些问题吗?

在移动游戏对高品质画面的要求不断增加的背景下&#xff0c;我们一直专注于移动设备GPU性能的优化&#xff0c;以确保您的游戏体验得以最佳展现。然而&#xff0c;不同GPU芯片之间的性能差异以及由此可能引发的GPU瓶颈问题使得优化工作更加具有挑战性。 因此&#xff0c;在不久…

图神经网络GNN(一)GraphEmbedding

DeepWalk 使用随机游走采样得到每个结点x的上下文信息&#xff0c;记作Context(x)。 SkipGram优化的目标函数&#xff1a;P(Context(x)|x;θ) θ argmax P(Context(x)|x;θ) DeepWalk这种GraphEmbedding方法是一种无监督方法&#xff0c;个人理解有点类似生成模型的Encoder过程…

对图像中边、线、点的检测(支持平面/鱼眼/球面相机)附源码

前言 图像的线段检测是计算机视觉和遥感技术中的一个基本问题,可广泛应用于三维重建和 SLAM 。虽然许多先进方法在线段检测方面表现出了良好的性能,但对未去畸变原始图像的线 段检测仍然是一个具有挑战性的问题。此外,对于畸变和无畸变的图像都缺乏统一的…

Git使用【中】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析3 目录 &#x1f449;&#x1f3fb;分支管理分支概念git branch&#xff08;查看/删除分…

树的存储结构以及树,二叉树,森林之间的转换

目录 1.双亲表示法 2.孩子链表 3.孩子兄弟表示法 4.树与二叉树的转换 &#xff08;1&#xff09;树转换为二叉树 &#xff08;2&#xff09;二叉树转换成树 5.二叉树与森林的转化 &#xff08;1&#xff09;森林转换为二叉树 以下树为例 1.双亲表示法 双亲表示法定义了…

CompletableFuture 异步编排

目录 CompletableFuture 的详解代码测试配置类的引入Demo1Demo2CompletableFuture的async后缀函数与不带async的函数的区别ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的区别Spring 线程池的使用业务使用多线程的原因场景一:场景二:FutureTask介绍线程池为什么要使用阻塞队…