new到底做了什么?

下面是一个实例化自定义的对象,我们将要对他进行分析

//定义构造函数
function A(){
    this.b = 1 //在这个对象里增加一个属性
    //不可以拥有返回对象的return语句
}
var obj = new A() //实例化一个对象
console.log(obj) //{ b: 1 }

在这个过程中new到底做了什么?

下面针对分析new A():

1.构造函数拥有一个叫prototype的属性,这里即A.prototype,这个对象默认有一个属性constructor,他的值是这个构造函数a。

2.javascript先创建一个空对象,先叫它做临时对象,它继承A.prototype的所有属性。

3.当A()执行完毕,再设置这个临时对象的属性this,值为A

4.如果没有返回语句,或者是返回对象的语句,那么返回的就是这个临时对象,否则返回的我们返回的对象。

当由构造函数进行对象实例化时,返回的对象是继承的谁?

先给出准确的解释

1.当没有返回语句,或者返回对象的语句时,返回的对象继承自a.prototype。

2.当返回的是一个对象时,主义,返回的对象是我们自己创建的对象,所以它继承自它构造函数的原型。

没有返回对象时:

//没有返回对象时
function A(){
    this.b = 1
}
var obj = new A()
console.log(Object.getPrototypeOf(obj) === A.prototype) //true

有返回对象时

//返回对象时
function A(){
    return { b:1}
}
var obj = new A()
console.log(Object.getPrototypeOf(obj) === A.prototype) //true
console.log(Object.getPrototypeOf(obj) === Object.prototype) //true

对已经实例化的对象的构造函数原型进行修改时,并不影响这个实例化对象

这里有一个实例可以说明这个现象

function A(){
    this.b = 1
}
var obj = new A()
A.prototype = {b:10}
console.log(obj.b) //1
时间: 2024-10-10 13:00:02

new到底做了什么?的相关文章

罗永浩到底做错了什么?

老罗的锤子一直以来都是不温不火,最近给别人都有"卖身阿里"的感觉了,和雷军的小米等其他国内手机品牌厂商相比,老罗还是挺失败的,为什么老罗的锤子卖不动呢? 今天企业纽带线CRM系统小编要跟大家聊的是罗永浩到底做错了什么. 1:把情怀估值太高----附加值变现时机太早 3000多到2000,情怀怎么也值1000吧? 错!情怀是要包裹在"性价比""占便宜""投资少回报大"的包装里才能出售的. 不然你多新鲜的情怀,多有机无害非转基因的

open_window()到底做了什么?

1 Hlong MainWndID= (Hlong)m_hWnd; 2 open_framegrabber("File", 4, 4, 0, 0, 0, 0, "default", -1, "default", -1, "default", 3 "", "default", -1, -1, &AcqHandle); 4 grab_image(&Image, AcqHand

AFNetworking到底做了什么?

前言 作为一个iOS开发,也许你不知道NSUrlRequest.不知道NSUrlConnection.也不知道NSURLSession...(说不下去了...怎么会什么都不知道...)但是你一定知道AFNetworking. 大多数人习惯了只要是请求网络都用AF,但是你真的知道AF做了什么吗?为什么我们不用原生的NSURLSession而选择AFNetworking? 本文将从源码的角度去分析AF的实际作用. 先从最新的AF3.x讲起吧: 首先,我们就一起分析一下该框架的组成. 将AF下载导入工

转Rollback后undo到底做了些什么?

转自:http://biancheng.dnbcw.info/oracle/309191.html Rollback后undo到底做了些什么? 从概念上讲,undo正好与redo相对.当你对数据执行修改时,数据库会生成undo信息,这样万一你执行的事务或语句由于某种原因失败了,或者如果你用一条rollback语句请求回滚,就可以利用这些undo信息将数据还原到修改前的样子.Redo用于在失败时还原事务(即恢复事务),undo则用于取消一条语句或者一组语句的作用.与redo不同,undo在数据库内

SQL 中的 EXISTS 到底做了什么?

本文中提到的所有数据表基于王珊<数据库系统概论(第4版)>. 个人认为 SQL 中的 EXISTS 关键字对于初学者来说是比较难理解的一个,尤其是多个 EXISTS 子句的嵌套.我就写篇小文章,来简单地来解释下 EXISTS 到底做了些什么. 我们先从 SQL 中最基础的 WHERE 子句开始. 比如下面这条 SQL 语句: 很显然,在执行这条 SQL 语句的时候,DBMS 会扫描 Student 表中的每一条记录,然后把符合 Sdept = 'IS' 这个条件的所有记录筛选出来,并放到结果集

MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了,对于问题的原因仍不知所以. 本文开始,记录学习<MySQL实战45讲>专栏的过程. 也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗? 是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分. 我知道关注公众号的小伙

定投6年以亏损收场,他到底做错了什么

定投6年,以亏损收场,她到底做错了什么? 今天听了一个惨烈的故事.球仔一同学,从2010年开始定投某只基金,每个月8号投300块钱,坚持了整整六年,昨天终于全部赎回,以净亏损200多收场.她自己觉得还挺高兴的,觉得每个月省300块钱,坚持下来竟然在基金账户里面攒了几万. 球仔却不以为然.这明显是一个很凄凉的故事嘛!因为她的定投,收益率曾经高达50%以上.可惜她没有取出,眼睁睁看着收益全部跌没了. 哦!不对!还不是眼睁睁,她是设定了定投之后,每个月就让它从银行卡扣钱,六年时间都没去管收益如何.球仔

SpringApplication.run 到底做了什么?

详解网址:https://www.jianshu.com/p/c2789f1548ab SpringApplication 准备阶段 ApplicationContext 启动阶段 ApplicationContext 启动后阶段 SpringApplication.run 到底做了什么? 原文地址:https://www.cnblogs.com/Koma-vv/p/11581966.html

5000字创业日记:创业4个月,我到底做了哪些事情

创业满四个月 累.神经衰弱睡不好觉 需要处理的工作细节问题越来越多巨想有分身 产品遇到的瓶颈萦绕心头,每时每刻跟幻灯片儿似的一抬眼就是 想闭会眼睛一堆事等着解决,画了新的产品图恨不得明天就能做好回收用户反馈 5.1过节别人的状态是“耶,过节出去玩”,我的状态是“fuck,又耽误3天时间” 以上是一个没什么背景的.马上而立之年的,创业4个月,收入少,睡眠少,创业前景未知,鸡血用完了空血fighting的北京屌丝创业者的真实生活状态. 今天写这篇文章,算是对这几个月的历程做一个记录,一来为日后回忆起