当前位置: 首页 > news >正文

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

目录

作用

原型链

引用类型:__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.lryc.cn/news/178383.html

相关文章:

  • pycharm中配置torch
  • 什么是Times New Roman 字体
  • 企业会议新闻稿怎么写?会议类新闻稿如何撰写?
  • 算法 滑动窗口最大值-(双指针+队列)
  • Java 并发编程面试题——BlockingQueue
  • Ubuntu Nacos开机自启动服务
  • C++核心编程--继承篇
  • 小程序 解决自定义弹窗滚动穿透问题,解决弹窗背景内容滚动问题
  • win10搭建Selenium环境+java+IDEA(2)
  • 抢先一步感受未来:Raspberry Pi 5正式发布!
  • 【教程】Ubuntu自动查看有哪些用户名与密码相同的账户,并统一修改密码
  • 基于 Python+DenseNet121 算法模型实现一个图像分类识别系统
  • 贪心算法-点灯问题
  • 软件测试之单元测试自动化入门基础
  • 93 # 实现 express 错误处理中间件
  • PHP 创建 MySQL 表
  • 中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置
  • 大数据分布式处理框架Hadoop
  • echarts学习总结
  • 与初至波相关的常见误解
  • screenfull全屏、退出全屏、指定元素全屏的使用步骤
  • 问题 - 谷歌浏览器 network 看不到接口请求解决方案
  • Java:正则表达式的命名捕获组
  • ELK 处理 Spring Boot 日志
  • No152.精选前端面试题,享受每天的挑战和学习
  • Flutter:类功能索引(全)
  • 电脑技巧:笔记本电脑升级固态硬盘的注意事项,看完你就懂了
  • TLS/SSL(一)科普之加密、签名和SSL握手
  • UVA-1374 旋转游戏 题解答案代码 算法竞赛入门经典第二版
  • logback.xml springboot 项目通用logback配置,粘贴即用,按日期生成