typeof,instanceof的区别,扩展知识:显示原型(prototype)与隐式类型(__protot__)
3.typeof 和instanceof区别
1.typeof
主要用于判断对象类型
console.log(typeof null) //object
console.log(typeof undefined) //undefined
console.log(typeof [1,2,3]) //object
console.log(typeof Boolean) //function
console.log(typeof 1) //number
console.log(typeof '1') //string
console.log(typeof String) //function
console.log(typeof boolean) //undefined
console.log(typeof true) //boolean
console.lig(typeof symbol) //symbol
console.log(typeof Function) //function
类型有:
1.object
2.function
3.number
4.string
5.boolean
6.undefined
7.symbol =>一种标识唯一性的ID
注意:每个symbol属性都是唯一的,任意两个symbol都不相等
2.instanceof
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
右边必须为一个对象
console.log(typeof null) //object
console.log(typeof undefined) //undefined
console.log(typeof [1,2,3]) //object
console.log(typeof Boolean) //function
console.log(typeof 1) //number
console.log(typeof '1') //string
console.log(typeof String) //function
console.log(typeof boolean) //undefined
console.log(typeof true) //boolean
console.lig(typeof symbol) //symbol
console.log(typeof Function) //function
注意:每个函数的原型链上都有原型,再上面都有对象
1.显示原型 : prototype
只要创建一个新的函数,就会为该函数创建一个prototype属性.该属性指向函数的原型对象.所有原型对象都会自动获得一个constructor构造函数属性,该属性指向prototype属性所在函数的指针.
2.隐式原型 : __proto__
隐式原型指向创建这个对象的函数的prototype.
object.peototype.__proto__ == null
注意:通过Function.prototype.bind方法构造出来的函数没有prototype属性。
3.显示原型与隐式原型的区别和联系
function P(){}
let p1 = new P();
p1.__proto__ === P.prototype //true
P.prototype // {constructor: ƒ}
P.prototype.constructor === P //true
P.__proto__ === Function.prototype //true
1.对象只有__proto__属性,这个属性是指向他的构造函数的prototype属性
function B(b){
this.b = b;
}
var b = new B('seanxiao')
console.log(b)
b对象的属性是__proto__,指向构造函数B的prototype,B.protptype.__proto__指向Object.prototype
Object.protptype.__protp__是null
而则一层一层的链接 关系就是原型链。
typeof,instanceof的区别,扩展知识:显示原型(prototype)与隐式类型(__protot__)的更多相关文章
- 275 原型与原型链:显式原型prototype ,隐式原型__proto__,隐式原型链,原型链_属性问题,给原型对象添加属性/方法
1.所有函数都有一个特别的属性 prototype : 显式原型属性 [普通构造函数的实例对象没有prototype 属性,构造函数有__proto__属性,原型对象有__proto__属性 ] 2. ...
- selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python
我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中 ...
- C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数
一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...
- C#显示接口实现和隐式接口实现
在项目中可能会遇到显示接口实现和隐式接口实现.什么意思呢?简单来说使用接口名作为方法名的前缀,这称为“显式接口实现”:传统的实现方式,称为“隐式接口实现”.隐式接口实现如下: interface IS ...
- C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法
1.自动属性(Auto-Implemented Properties) //以前的写法 .net2.0 private string _userName; public string UserName ...
- JavaScript 隐式原型(_proto_)与显示原型(prototype)
作者:苏墨橘链接:https://www.zhihu.com/question/34183746/answer/59043879来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- VC++中动态链接库的显示加载和隐式加载的区别
两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样的.显式调用麻烦了点,但可以没有相应的lib库:隐式调用,使用起来比较 简单,有函数的声明(头文件.h)就可以了,但必须有li ...
- 显示转换explicit和隐式转换implicit
用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...
- MVC 的 Razor引擎显示代码表达式与隐式代码表达式
隐式代码表达式 就是一个标识符,之后可以跟任意数量的方法调用("()").索引表达式("[]")及成员访问表达式(".").但是,除了在&q ...
随机推荐
- Forcepoint
Forcepoint One Endpoint Diagnostics Tool C:\Program Files\Websense\Websense Endpoint\WEPDiag.exe &qu ...
- Go 指针声明后赋值,出现 panic: runtime error: invalid memory address or nil pointer dereference
指针基础知识package main import "fmt" func main() { var p *int p = new(int) *p = 1 fmt.Println(p ...
- cp复制命令详解
linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...
- 一些有意思的git
fs: https://github.com/psankar/simplefs https://github.com/gzc/isystem/blob/master/basic/Crash_Consi ...
- vmalloc详解
vmalloc是一个接口函数, 内核代码使用它来分配在虚拟内存中连续但在物理内存中不一定连续的内存. 只需要一个参数,以字节为单位. 使用vmalloc的最著名的实例是内核对模块的实现. 因为模块可能 ...
- Oracle 必要的后台进程
Oracle 必要的后台进程 Table of Contents 1. 简述 2. 必要进程 2.1. 默认启动后台进程 2.2. 哪些进程不能杀 1 简述 oralce 每次大的版本变更,后台进程都 ...
- MessageBox 弹框
模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示.确认消息和提交内容. 从场景上说,MessageBox 的作用是美化系统自带的 alert.confirm 和 prompt,因此适合展 ...
- MEF部件的生命周期(PartCreationPolicy)
一.演示概述 本演示介绍了MEF的生命周期管理,重点介绍了导出部件的三种创建策略,分别是:CreationPolicy.Any.CreationPolicy.Shared.CreationPolicy ...
- Python学习小技巧之列表项的排序
Python学习小技巧之列表项的排序 本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 典型代码1: data_list = [6, 9, 1, ...
- Excel随机数相关
基本函数 RAND() 函数:自动生成一个[0,1)的平均分布随机数(依重新计算而改变) RANDBETWEEN(bottom,top) :返回一个介于指定数字直接的随机数,不会自动改变 INT(nu ...