new关键字创建对象的过程

ByteHorizonMaster
• 阅读 1589

题目解析

先看代码

var Func=function(){
};
var func=new Func ();

new共经过了4几个阶段

1、创建一个空对象
var obj=new Object();
2、设置原型链
obj.__proto__= Func.prototype;
3、让Func中的this指向obj,并执行Func的函数体。
var result =Func.call(obj);
4、判断Func的返回值类型:

如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。

if (typeof(result) == "object"){
  func=result;
}
else{
    func=obj;;
}
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Karen110 Karen110
4年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
qchen qchen
3年前
Java中6种创建对象的方式
1、使用关键字new创建对象java//无参构造Testtest1newTest();//有参构造Testtest2newTest("小明",18);new对象过程中,底层发生了什么?1.类加载JVM检查先是否已经加载,没有则执行类加载过程2.声明类型引用声明一个Test类型的引用test3.堆内存分配类加载步骤中已确定对象所需
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
java 线程及线程池
说明:线程共包括以下5种状态。1. 新建状态(New):线程对象被创建后,就进入了新建状态。例如,ThreadthreadnewThread()。2. 就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread
浩浩 浩浩
5年前
JVM--对象创建过程
类创建总结根据new的参数在常量池种寻找一个类的符号引用,如果类没有被加载,则进行类加载、解析、初始化。<cinit
九路 九路
5年前
2 Java对象的创建过程
JAVA中创建对象直接new创建一个对象,对么对象的创建过程是怎样的呢?程序运行过程中有许多的对象被创建出来.那么对象是如何创建的呢?一对象创建的步骤1遇到new指令时,检查这个指令的参数是否能在常量池中找到一个符号引用2如果找到符号引用,就检查这个符号引用是否已经被加载,解析和初始化过3如果没有加载过,则执行类加载过程
Wesley13 Wesley13
4年前
Java对象的内存布局
一. 对象的创建  在语言层面上,创建对象通常仅仅只是一个new关键字而已,而在虚拟机中,这包含的主要过程有(仅限于Java普通对象,不包括数组和Class对象,这两者比较特殊):类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行ini方法等。主要流程如下:!(https://static.oschina
Wesley13 Wesley13
4年前
Unity 获取场景中所有目标对象(包括不激活的对象)
usingUnityEngine;usingUnityEditor;usingSystem.Collections.Generic;publicclassExampleScript:MonoBehaviour{//获取场景中所有目标对象(包括不激活的对象)不包括Pre
Stella981 Stella981
4年前
Clone
Java中对象的创建clone顾名思义就是复制,在Java语言中,clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1使用new操作符创建一个对象2使用clone方法复制一个对象那么这两种方