美文网首页
js的new操作符做了哪些事情

js的new操作符做了哪些事情

作者: Adonia汪 | 来源:发表于2021-03-23 17:32 被阅读0次

先来一段代码

var Person = function () {};
var person1 = new Person();

new 过程一共包括4个步骤:

1、创建一个新对象

var person1 = new Object();

2、设置原型链,将空对象的原型proto指向构造函数的原型

person1.__proto__ = Person.prototype

3、将构造函数的作用域赋给新对象(将this指向这个新对象),执行构造函数代码(为给这个新对象添加属性)

让Person中的this指向person1,并执行Person的函数体。

var result = Person.call(person1)

4、返回新对象(return),判断Person的返回值类型。如果是值类型,返回person1,忽略返回值;如果是引用类型,就返回这个引用类型的对象。

return result instanceof Object ? result : person1;

默认情况下函数返回值为undefined,即没有显示定义返回值的话,但构造函数例外,new 构造函数在没有return的情况下默认返回新创建的对象。

但是,在有显示返回值的情况下,如果返回值为基本数据类型(string、number、null、undefined、Boolean),返回值仍然是新创建的对象。
只有在显示返回一个非基本数据类型(object)时,函数的返回值才为指定对象。这种情况下,this所引用的值也被丢弃了。

相关文章

  • js的new操作符做了哪些事情

    先来一段代码 new 过程一共包括4个步骤: 1、创建一个新对象 2、设置原型链,将空对象的原型proto指向构造...

  • JS知识点

    new 这么一个东西,在 js 中到底是 做了哪些事情。简单来讲 js 在new 的过程中只做了三件事 1.创建一...

  • new操作步骤

    js中的new()到底做了些什么?? 要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造...

  • 前端面试题201903

    js基础 事件循环(Event loop)和nodejs循环事件 bind实现 类继承 new 做了哪些事情 th...

  • JavaScript手写代码无敌秘籍

    1实现一个new操作符 new操作符做了以下事情: 1、创建了一个全新的对象2、会被执行[[Prototype]]...

  • JS基础回归01:new操作符,原型和原型链

    本篇介绍 new 操作符的背后原理以及 JS 如何依赖原型形成原型链,完成继承。 new 操作符的本质 new 操...

  • js new操作符做了什么

    var Func = function(){}; var func = new Func (); 1、首先创建了一...

  • new操作符原理及实现

    [toc] 分析:new做了什么 new操作符通过执行自定义构造函数或者js内置构造函数,从而生成一个实例对象。 ...

  • js中new操作符做了什么并实现自己的new操作符

    我们通过new运算符的使用,来探寻new操作符在执行的过程中究竟做了哪些操作,并且根据操作实现自己的new运算符。...

  • 关于 new 操作符

    1. 为什么要有new操作符? JS 的 new 到底是干什么的? 本文指出,new 操作符其实就是个语法糖,用了...

网友评论

      本文标题:js的new操作符做了哪些事情

      本文链接:https://www.haomeiwen.com/subject/encpqltx.html