day-034-thirty-four-20230324-instanceof关键字与in关键字-原型链
instanceof关键字与in关键字
instanceof关键字
instanceof: 判断某个实例是不是属于某个类,属于true,不属于false
//instanceof: 判断某个实例是不是属于某个类, 属于true 不属于false
let arr=new Array();
console.log(arr instanceof Array);//true
console.log(arr instanceof Date);//false
console.log(arr instanceof Object);//true
console.log(Array);//是一个函数,也是一个构造函数,也是一个类
对于自定义函数也是可以的
function Fn(){
this.num=100;
}
let f=new Fn();// f实例 Fn是类
console.log(f instanceof Fn);//true
console.log(f instanceof Object);//true
console.log(Fn);
in关键字
-
in: 用于检测当前对象是否存在某个属性
- 只要自身或者沿着原型链能找到的,就返回true
- 这个属性可以是实例对象自身的私有属性,也可以是它__proto__原型链上的公有属性。
let arr = [1, 2, 3];
console.log(arr);
console.log("length" in arr); //true
console.log("push" in arr); //true
console.log("isPrototypeOf" in arr); //true
console.log("fang" in arr); //false
- 对于自定义函数也是可以的
function Fn() {
this.num = 100;
}
Fn.prototype.getX = function getX() {};
let f = new Fn();
console.log(f);//Fn {num: 100}
console.log("num" in f); //true
console.log("getX" in f); //true
console.log("isPrototypeOf" in f); //true
console.log("fang" in f); //false
原型链
原型链是堆内存之间各个对象内存之间的关系,不涉及到栈内存。
函数作图中包含
-
作用域
-
函数体字符串
-
函数键值对
-
静态方法
-
静态属性
-
prototype(原型),几乎所有的函数都有这个属性
-
prototype指向函数自己的原型对象
-
原型对象是一个对象,也在是堆内存中
-
原型属性
-
原型对象都有一个属性constructor
- 指向原型对象自己的构造函数
-
原型对象都有一个属性__prototype
-
-
原型方法
-
-
-
没有prototype的函数
- 箭头函数没有prototype
- 基于ES6给对象某个成员赋值函数值的快捷操作(不具备prototype)
-
-
-
原型链上各个关系
函数的构造函数模式
-
函数以构造函数模式执行
-
函数在椎内存中包含
-
作用域
-
函数体字符串
-
函数键值对
-
静态方法
-
静态属性
-
prototype(原型),几乎所有的函数都有这个属性
-
prototype指向函数自己的原型对象
-
原型对象是一个对象,也在是堆内存中
-
原型属性
-
constructor,原型对象都有该属性
-
-
-
-
-
-
-
-