javascript通过new操作符构建一个对象的步骤

《Javascript高级程序设计》的解释:

  1. 创建一个对象
  2. 将构造函数的作用域赋给新对象(把新对象作为构造函数的调用上下文,也就是this的指向)
  3. 执行构造函数中的代码
  4. 返回这个新对象
  5. 如果在构造函数里边return了一个对象,这个对象就会取代默认的返回,那么new操作符实例化出来的东西就不再和构造函数以及其原型有关系了 就相当于工厂模式直接创建对象一样

基于第5点,我实在弄不明白 javascript高级程序设计里边 第六章创建对象 工厂模式和寄生构造函数模式有什么区别; 函数体里边的操作一毛一样,然后调用方式工厂是直接调用,寄生是new 操作, 但是由于构造函数里边显示声明了return 又变得和工厂没什么本质上的区别, 什么鬼。。。

《你不知道的javascript 上卷》的解释,个人觉得更加正确

  1. 创建一个全新的对象
  2. 这个新对象会被执行[[Prototype]]连接
  3. 这个新对象会被绑定到函数调用的this
  4. 如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象

js的new到底干了啥 -的更多相关文章

  1. JS中new到底发生了什么

    outline prototype 与 __proto__ function 与 object new 到底发生了什么 prototype 与 __proto__ 首先说下在JS中比较容易让人困惑的  ...

  2. python 中__name__ = '__main__' 的作用,到底干嘛的?

    python 中__name__ = 'main' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and execu ...

  3. JDBC连接中Class.forName("")到底干了什么?

    思考了一个问题,Class.forName("***");到底干了什么? 我们知道Class.forName( )静态方法的目的是为了动态加载类,但是一般来说,一个类forName ...

  4. js new到底干了什么,new的意义是什么?

    学过JS的都知道 创建对象可以这样 var obj=new Object(); var obj=new Function(); 用内置的函数对象来构造对象 还可以这样自定义函数 function te ...

  5. js学习日记-new Object和Object.create到底干了啥

    function Car () { this.color = "red"; } Car.prototype.sayHi=function(){ console.log('你好') ...

  6. js的arguments到底是什么?

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

  7. JS的定时到底有多不准

    博客逐步迁移到,独立博客,原文地址,http://www.woniubi.cn/js_hide_tab_setinterval/ 我们一直都在说,JS的定时非常的不准确,但是很少有人去验证他,今天我就 ...

  8. js 中this到底指向哪里?

    其实js的this指向很简单.我们记住下面3种情况. this 指向的是浏览器中的window.代码如下: function fn(){ this.name='yangkun'; this.age=2 ...

  9. js中‘0’到底是 true 还是 false

    if ('0') alert("'0' is true");  if ('0' == false) alert("'0' is false");结果是,两次都 ...

随机推荐

  1. 安装Webmin1.860(RPM方式)

    Webmin是基于web的功能强大的管理工具,管理员可以通过Webmin以图文方式方便的管理CentOS 7系统.本文介绍如何在CentOS 7中安装Webmin. 1.去官网获取最新的RPM链接 2 ...

  2. RSA加密解密及数字签名Java实现

    http://my.oschina.net/jiangli0502/blog/171263

  3. 修改Tomcat标题栏内容

    你是否遇到过在一个OS任务栏中同时打开多个Tomcat启动程序窗口,这种情况下你会无法区分具体是哪个窗口启动哪个程序,以下方式可以实现Bat启动程序标题栏自定义. 打开Tomcat的Bin目录中,打开 ...

  4. devops流程

    学习资源: https://www.youtube.com/watch?v=JBtWxj9l7zM&list=PLoYCgNOIyGAAzevEST2qm2Xbe3aeLFvLc&t= ...

  5. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  6. autoRelease

    cocos2dx采用的是引用计数的方式来管理对象的持有和释放. 所谓引用计数就是说,每个对象都会有一个属性用来记录当前被几个地方引用了.在释放内存的时候会根据这个引用计数来确定是否要用delete操作 ...

  7. Hibernate核心类和接口具体介绍

    一.hiobernate核心类和接口预览图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/fo ...

  8. Ctrl/Alt 快捷键

    Ctrl+S 保存   Ctrl+W 关闭程序   Ctrl+N 新建文档   Ctrl+O 打开(选择打开其他文档)   Ctrl+Z 撤销   Ctrl+F 查找   Ctrl+X 剪切   Ct ...

  9. JS 手势长按代码

    同时支持长按和点击事件,无依赖版 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  10. windows下忘记mysql超级管理员rootpassword的解决的方法

    今天帮一个朋友找回了MYSQL的超级管理员ROOTpassword.開始输入命令的时候少打了个"点"害的折腾了几个小时.最终攻克了,写个教程,方便以后使用! 假设你是server是 ...