先看一个例子:

 function Person() {this.name = 'Andy';this.age = 20;this.say = function () {console.log('hello everybody');}}Person.prototype.test = function(){console.log('test');};
 let p1 = new Person();console.log(p1.name);//'Andy'console.log(p1.age);//20p1.say();//'hello everybody'p1.test();//'test'
new操作符的作用如下:

1.创建一个空对象
2.由this变量引用该对象
3.该对象继承该函数的原型
4.把属性和方法加入到this引用的对象中
5.新创建的对象由this引用,最后隐式地返回this。
过程如下:

let obj = {};//创建一个空对象
obj.__proto__ = Person.prototype;//该对象继承该函数的原型
Person.call(obj);//隐式地返回this

js中new操作符到底干了什么?相关推荐

  1. new操作符到底干了什么?

    前几天无意间发现了刚开始学JavaScript时在知乎写的一些回答,有一个就是讲new操作符到底干了什么.从现在的视角看我当时的回答虽然是正确的,但是在对原理的剖析和细节的理解上还相去甚远.所以借此机 ...

  2. JS中的arguements到底是个啥?

    类 数组 对象:arguments 众所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做argumen ...

  3. 关于js中delete 操作符的秘密(如何删除对象的属性,清空对象)

    开发十年,就只剩下这套架构体系了! >>>    概念 再mdn中detele的概念如下. delete 操作符用于删除对象的某个属性:如果没有指向这个属性的引用,那它最终会被释放. ...

  4. JS中new操作符做了什么?

    1.new操作符做了什么 new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例.new 关键字会进行如下的操作: 创建一个空的简单JavaScript对象(即{}): 链接该对 ...

  5. js中new操作符的作用及原理

    要知道new操作符的作用是什么,得先知道它干了什么事(原理): 它创建了一个新对象 它将构造函数的原型属性和方法挂载到新对象的__proto__(原型指针)上 他执行了构造函数并将构造函数的this指 ...

  6. web面试 new操作符到底干了什么?

    面试或者笔试经常会遇到的 如果就回答创建了一个对象 ok 那gg了 面试官看来就是菜鸟一枚 所以知道什么就说什么 蒙在心里谁知道你的水有多深呢? 呢?呢? new操作符应该是进行了四个操作 1,创建一 ...

  7. js中new操作符具体做了什么

    创建了一个空的对象 将空对象的原型,指向于构造函数的原型 将空对象作为构造函数的上下文(改变this指向) 对构造函数有返回值的处理判断 function Fun( age,name ){this.a ...

  8. new 操作符具体干了什么

    一.定义 new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 在创建一个新的实例的时候,必须使用 new 操作符.而使用 new 操作符会经历以下 4 个步骤: 创建一个新 ...

  9. js中的this:从执行上下文的角度看this

    前言 前面我们已经讲完了js的作用域和作用域链,说白了就是js的一个变量的查找规则,但是由于js静态作用域的这么一个特性,导致作用域只在声明的时候就已经创建好了,这对于我们开发来说有时候不是那么友好: ...

  10. js 浅拷贝直接赋值_第二十二篇 JS中浅拷贝的方法有哪些?

    重要:什么是拷贝?之前也写过类似的文章,大家可以看<理解js的深拷贝和浅拷贝原理和实现的方法> 首先来直观的感受一下什么是拷贝. let arr = [1, 2, 3]; let newA ...

最新文章

  1. Android常见面试题解答
  2. 网站排名在首位后,为什么还要继续做SEO?
  3. 银行IT迎“高景气”时代,宇信科技如何领跑行业?
  4. 2019 surf project for a milestone
  5. SqueezeNet网络模型详解
  6. leetcode 712. Minimum ASCII Delete Sum for Two Strings | 712. 两个字符串的最小ASCII删除和(暴力递归->傻缓存->DP)
  7. CSU 1416 Practical Number
  8. redis源码剖析(7):基础数据结构quicklist
  9. 取文字_玉镯取不出来了怎么办?教你6种最有效的方法
  10. 计算机一级操作题题库在线,全国计算机一级操作题「题库」
  11. 华为云计算08—灾备
  12. seo入门需掌握的基础知识
  13. 计算机组成原理试题和答案,计算机组成原理试题(含答案)
  14. 想学开服技术,先了解服务端的组成
  15. iMeta高被引论文|陈同/刘永鑫等高颜值绘图网站imageGP被引500次(截止22/12/13)
  16. Jackson注解:@JsonAlias使用详解
  17. Python之10人比赛分组
  18. Android加密算法
  19. RxJava2.x的集成及用法详解
  20. 操作系统的重要性及系统调用和编程语言的移植性

热门文章

  1. 华为新员工入职180天培训计划
  2. matlab画一只猫,【MATLAB系列04】当一只猫遇见了Matlab
  3. 小米5手机刷成开发版获取root权限
  4. 一次基于Vue的Vedio.js使用
  5. 移动硬盘只显示盘符,拒绝访问解决方法
  6. 敏捷测试的关键成功要素
  7. python算方差_python 求方差python函数每日一讲 - divmod数字处理函数
  8. 系统封装 如何加载PE到Easyboot进行合盘
  9. Echarts柱状图和折线图结合
  10. python设置休眠时间_如何在Python中实现时间睡眠?