首先我们都知道js中构造函数一般应该是这样的

  1. function Super (a) {
  2. this.a = a;
  3. }
  4. Super.prototype.sayHello = function() {
  5. alert('hello world');
  6. }

但如果在构造函数中 加入 return 会是什么结果呢

  1. function Super (a) {
  2. this.a = a;
  3. return {a: 2};
  4. }
  5. Super.prototype.sayHello = function() {
  6. alert('hello world');
  7. }

new 这个构造函数会返回什么?

Object {a: 2}

为什么会这样?我们的构造函数和原型上的方法呢?别急 我们再来 列出集中情况

  1. //直接 return
  2. function A(){
  3. return;
  4. }
  5. //返回 数字类型
  6. function B(){
  7. return 123;
  8. }
  9. //返回 string类型
  10. function C(){
  11. return "abcdef";
  12. }
  13. //返回 数组
  14. function D(){
  15. return ["aaa", "bbb"];
  16. }
  17. //返回 对象
  18. function E(){
  19. return {a: 2};
  20. }
  21. //返回 包装类型
  22. function F(){
  23. return new Number(123);
  24. }

结果分别是

  1. A {}
  2. B {}
  3. C {}
  4. ["aaa", "bbb"]
  5. Object {a: 2}
  6. Number {[[PrimitiveValue]]: 123}
  7. A {}

我们可以看出 return 基本类型 会返回一个空对象

而返回对象类型 则会返回这对象

与我们常用的那个构造函数相结合

  1. function Super (a) {
  2. this.a = a;
  3. return 123;
  4. }
  5. Super.prototype.sayHello = function() {
  6. alert('hello world');
  7. }
  8. function Super_ (a) {
  9. this.a = a;
  10. return {a: 2};
  11. }
  12. Super_.prototype.sayHello = function() {
  13. alert('hello world');
  14. }

分别new Super(1); new Super_(1);

结果是

Super {a: 1} 具有原型方法sayHello

Object {a: 2}

好了现在我们总结下 在构造函数中 return 基本类型 不会影响

构造函数的值而 return 对象类型 则会替代构造函数返回该对象

构造函数用return 会出显什么情况的更多相关文章

  1. 从一个例子讲解拷贝构造函数与return

    #include "iostream" using namespace std; class Location { public: Location(, ) { X = xx; Y ...

  2. 合成的默认构造函数定义为delete的一种情况(针对C++11标准)

    1. 默认初始化 如果定义变量时没有指定初值,则变量会被默认初始化,此时变量被赋予了"默认值". 对于类类型的变量来说,初始化都是依靠构造函数来完成的.因此,即使定义某个类的变量( ...

  3. 牛客网Java刷题知识点之构造函数与set方法、与类名同名的一般方法、构造函数中有return语句

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  4. 介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。

    介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...

  5. JS构造函数中有return

    function foo(name) { this.name = name; return name } console.log(new foo('光何')) function bar(name) { ...

  6. go语言 函数return值的几种情况

    分三种情况 (以下 “指定返回值”这句话, 仅指return后面直接跟着的返回值) 退出执行,不指定返回值 (1) 函数没有返回值 package main import ( "fmt&qu ...

  7. try catch finally语句块中存在return语句时的执行情况剖析

    2种场景 (1) try中有return,finally中没有return(注意会改变返回值的情形);(2) try中有return,finally中有return; 场景代码分析(idea亲测) 场 ...

  8. git bash 出显错误不能用,怎么解决

    解决方法: 好像就是64的会出问题,其实32位的git也可以安装在64位的系统上. 将你64位的git卸掉了后,下载一个32位的git安装,就可以正常使用了, 当然,你的32位的出了错,卸了后也这样处 ...

  9. 构造函数的return返回值

    3 1. 2. 3.

随机推荐

  1. 第一章SpringBoot入门

    一.简介 SpringBoot来简化Spring应用的开发,约定大于配置,去繁从简,just run就能创建一个独立的产品级别的应用. 背景: j2EE笨重的开发方法,繁多的配置,低下的开发效率,复杂 ...

  2. iOS &Android 项目 Jenkins持续集成

    背景:由于之前的jenkins机器软件环境较老(mac系统 和 Xcode版本等太低).设备性能也是比较差,编译相关脚本也不大适合目前业务,所以,跟infra部门重新申请了一台固定ip .高配的mac ...

  3. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. Oracle提示错误消息ORA-28001: the password has expired

    首先,以SYS DBA身份进入sqlpuls 打开sqlpuls SQL->请输入用户名:sys as sysdba SQL->密码: 登录成功以后查询DBA用户状态 SQL->se ...

  5. MySQL数据库----基础操作

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  6. MySQL中的基本SQL语句

    标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ...

  7. Python Web学习笔记之SOCK_STREAM和SOCK_DGRAM

    SOCK_STREAM 数据流 一般是tcp/ip协议的编程 有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送 SOCK_DGRAM 数据包 udp协议网络编程 ...

  8. Spark样本类与模式匹配

    一.前言 样本类(case class)与模式匹配(pattern matching)是Scala中一个比较复杂的概念,往往让人感觉深陷泥沼.我在这里对Scala中的样本类与模式匹配进行了一些整理,希 ...

  9. EditText输入属性

    1. android:inputType="none" android:inputType="text" android:inputType="tex ...

  10. shell脚本中如何使scp不输入密码即可传输文件

    答:使用ssh密钥对 示例如下: 如果A机想要获取B机上的文件,那么需要将在A机上生成的公钥放置到B机上的指定位置~/.ssh/authorized_keys 问题一: 如何在A机上生成ssh密钥对? ...