夯实基础之--new关键字、instanceOf原理

1.instanceOf原理

 检测右边构造函数的prototype是否在左边对象的原型链上,在返回true,不在返回false

例:function  Persion(name,age){

    this.name = name;

this.age  = age;

  } ;

let  p  = new  Persion()

console.log( p   instanceOf  Persion )      //true

对象p的原型链为:p.__proto__  ==   Persion.prototype   Persion.prototype .__proto__  ==  Object.prototype   Object.prototype.__proto__ == null

2.new关键字原理

当执行代码new  Persion()时,会进行以下操作:

  • 创建一个空对象obj
  • 将obj的__proto__指向Persion.prototype
  • 显示的绑定this,Persion.call(obj,‘ ‘jake‘, 30)
  • 返回obj(前提是构造函数的返回值不是对象或者函数)

伪代码实现如下:

let  obj  = {};

obj.__proto__  =  Persion.prototype;

Persion.call(obj, ‘jake‘, 30);

return  obj;

  

原文地址:https://www.cnblogs.com/zifayin/p/10734862.html

时间: 2024-10-13 17:53:02

夯实基础之--new关键字、instanceOf原理的相关文章

【夯实基础】java关键字synchronized 详解

尊重版权:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 二.然而,当一个线程访问object的一个sy

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1

JavaScript夯实基础--关于分号

和其他许多编程语言一样,JavaScript使用分号(;)将语句分隔开,这对增强代码的可读性一整洁性是非常重要的,缺少分隔符,一条语句的结束就成了下一条语句的开始,反之亦然.在JavaScript中,如果语句各自独占一行,通常可以省略语句之前的分号(程序结尾或右花括号之前的分号也可省略).不过关于JavaScript中可选的分号有几细节需要注意. JavaScript并不是在所有换行处都填补分号:只有在缺少分号就无法正确解析时,才会填补分号.换句话说,如果当前语句和随后的非空格字符不能当成一个整

夯实基础——快速排序

逻辑结构:递归栈 物理结构:数组 快速排序分析: 最优时间复杂度:O(nlog2n)在乱序情况下 最坏时间复杂度:O(n^2) 在顺序情况下 平均时间复杂度:O(nlog2n) 空间复杂度:O(n) 稳定性:不稳定 快速排序主要有两个函数: 1 一次划归 int partition(int a[],int low,int high); 2 递归快速排序 void QuickSort(int a[],int low,int high); 3 非递归快速排序 void NonQuickSort(in

图像处理之基础---二维卷积运算原理剖析

卷积运算(Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表示函数f 与经过翻转和平移与g 的重叠部分的累积.如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广.假设: f(x),g(x)是R1上的两个可积函数,并且积分是存在的.这样,随着 x 的不同取值,这个积分就定义了一个新函数h(x),称为函数f 与g 的卷积,记为h(x)=(f*g)(x). 两个向量卷积,说白了就是多项式乘法.下面用个矩阵例子说明其工作原理: a和d的卷积就是

夯实基础——堆排序

堆结构:任意的一个父节点大于其子节点. 逻辑结构:二叉树 物理结构:数组 如果从角标0开始 父节点左孩子节点:2*i+1 父节点右孩子节点:2*i+2 最后一个非叶节点:(n-1)/2 如果从角标1开始 父节点左孩子节点:2*i 父节点右孩子节点:2*i+1 最后一个非叶节点:n/2 堆排序分析: 最优时间复杂度:O(nlog2n) 最坏时间复杂度:O(nlog2n) 平均时间复杂度:O(nlog2n) 空间复杂度:O(1) 稳定性:不稳定 堆排序主要分三个函数: 1 调整成堆结构 void H

【夯实基础】Spring在ssh中的作用

尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx 写的真不错. 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来做应用层的,他它负责调用业务逻辑serivce层.所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)

夯实基础——插入排序

物理结构:数组 插入排序分析: 最优时间复杂度:O(n) 顺序的情况下 最坏时间复杂度:O(n^2) 平均时间复杂度:O(n^2) 最坏空间复杂度:O(n) 辅助空间O(1) 稳定性:稳定 快速排序法函数: int InsertSort(int a[],int length); //插入排序 int InsertSort(int a[],int length) { int tmp,i,j; for(i=1;i<length;i++) { tmp=a[i]; j=i; while(j>0&

java基础之final关键字

与final关键字相关的笔试题面试题也是一道必考题.而且对于final的实际应用非常广泛,在代码设计的时候,如果对此不够足够掌握,可能就会很难排查与此相关的异常. final的理论知识如下: final类型的成员变量初始化值: 1.声明时候直接赋值 2.构造方法中赋值,如果一个类中有多个构造方法,就要保证在每个构造方法中都要完成对final类型变量的初始化工作 3.静态final成员变量必须在声明时赋值,且不能在构造方法中赋值 4.final成员变量指的是引用不能改变,即该变量的引用不能在指向其