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

//定义构造函数
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()开始执行,设置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. Linux 平台GCC使用小结
  2. HelloWorld!
  3. ABP框架详解(四)Feature
  4. Java垃圾收集机制
  5. mstsc 终端服务器超出了最大允许连接的解决办法
  6. 配置android source 在ubuntu中编译环境
  7. NOIP2015 斗地主(搜索+剪枝)
  8. 怎样区分JQuery对象和Dom对象 常用的写法
  9. Windows Server 2008企业64位版防火墙添加端口的方法
  10. 数字运算、ASCII
  11. CUMCM--总结
  12. KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情
  13. js常用内置对象及方法
  14. [BJOI2006]狼抓兔子
  15. c3.cpp
  16. 第七周学习总结-C#
  17. 通过IOCTL_ATA_PASS_THROUGH访问ATA设备接口
  18. 代码面试集锦 2 - Google
  19. JavaScript实现计时器
  20. BZOJ3083 遥远的国度(树链剖分+线段树)

热门文章

  1. UML_组件图
  2. Mininet 搭建自定义网络
  3. linux中grep使用方法具体解释
  4. ORACLE 热备begin backup / end backup
  5. golang基础数据结构
  6. CalendarHelper日期计算工具,各种日期的获取和计算
  7. Hive进阶(下)
  8. Apache-Tomcat 和 Apache-Maven配置
  9. 关于http状态码204理解
  10. Struts2命名空间问题