构造函数用return 会出显什么情况
首先我们都知道js中构造函数一般应该是这样的
- function Super (a) {
- this.a = a;
- }
- Super.prototype.sayHello = function() {
- alert('hello world');
- }
但如果在构造函数中 加入 return 会是什么结果呢
- function Super (a) {
- this.a = a;
- return {a: 2};
- }
- Super.prototype.sayHello = function() {
- alert('hello world');
- }
new 这个构造函数会返回什么?
Object {a: 2}
为什么会这样?我们的构造函数和原型上的方法呢?别急 我们再来 列出集中情况
- //直接 return
- function A(){
- return;
- }
- //返回 数字类型
- function B(){
- return 123;
- }
- //返回 string类型
- function C(){
- return "abcdef";
- }
- //返回 数组
- function D(){
- return ["aaa", "bbb"];
- }
- //返回 对象
- function E(){
- return {a: 2};
- }
- //返回 包装类型
- function F(){
- return new Number(123);
- }
结果分别是
- A {}
- B {}
- C {}
- ["aaa", "bbb"]
- Object {a: 2}
- Number {[[PrimitiveValue]]: 123}
- A {}
我们可以看出 return 基本类型 会返回一个空对象
而返回对象类型 则会返回这对象
与我们常用的那个构造函数相结合
- function Super (a) {
- this.a = a;
- return 123;
- }
- Super.prototype.sayHello = function() {
- alert('hello world');
- }
- function Super_ (a) {
- this.a = a;
- return {a: 2};
- }
- Super_.prototype.sayHello = function() {
- alert('hello world');
- }
分别new Super(1); new Super_(1);
结果是
Super {a: 1} 具有原型方法sayHello
Object {a: 2}
好了现在我们总结下 在构造函数中 return 基本类型 不会影响
构造函数的值而 return 对象类型 则会替代构造函数返回该对象
构造函数用return 会出显什么情况的更多相关文章
- 从一个例子讲解拷贝构造函数与return
#include "iostream" using namespace std; class Location { public: Location(, ) { X = xx; Y ...
- 合成的默认构造函数定义为delete的一种情况(针对C++11标准)
1. 默认初始化 如果定义变量时没有指定初值,则变量会被默认初始化,此时变量被赋予了"默认值". 对于类类型的变量来说,初始化都是依靠构造函数来完成的.因此,即使定义某个类的变量( ...
- 牛客网Java刷题知识点之构造函数与set方法、与类名同名的一般方法、构造函数中有return语句
不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...
- 介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。
介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...
- JS构造函数中有return
function foo(name) { this.name = name; return name } console.log(new foo('光何')) function bar(name) { ...
- go语言 函数return值的几种情况
分三种情况 (以下 “指定返回值”这句话, 仅指return后面直接跟着的返回值) 退出执行,不指定返回值 (1) 函数没有返回值 package main import ( "fmt&qu ...
- try catch finally语句块中存在return语句时的执行情况剖析
2种场景 (1) try中有return,finally中没有return(注意会改变返回值的情形);(2) try中有return,finally中有return; 场景代码分析(idea亲测) 场 ...
- git bash 出显错误不能用,怎么解决
解决方法: 好像就是64的会出问题,其实32位的git也可以安装在64位的系统上. 将你64位的git卸掉了后,下载一个32位的git安装,就可以正常使用了, 当然,你的32位的出了错,卸了后也这样处 ...
- 构造函数的return返回值
3 1. 2. 3.
随机推荐
- C++中的访问权限
C++中类的成员的权限: private:只能由该类的成员函数,友元函数访问,不能被该类的对象访问. protected:除了private外还能被子类的函数访问,同样不能被该类的对象访问. publ ...
- UVM环境(一)
1)如何避免绝对路径的出现:绝对路径一般都是用在信号的连接关系上,这样可以用virtual interface,来通过句柄的赋值来动态的建立连接关系.那么顶层模块怎么 样将interface的句柄赋值 ...
- java opencv使用相关
Using OpenCV Java with Eclipse http://docs.opencv.org/2.4/doc/tutorials/introduction/java_eclipse/ja ...
- AVPlayerLayer
AVPlayerLayer 最后一个图层类型是AVPlayerLayer.尽管它不是Core Animation框架的一部分(AV前缀看上去像),AVPlayerLayer是有别的框架(AVFound ...
- Python zip() 处理多于两个序列的参数, 存储结对的值
zip() 可以接受多于两个的序列的参数.这时候所生成的结果元组中元素个数跟输入序列个数一样 >>> a = [1, 2, 3] >>> b = [10, 11, ...
- Python中*args和**kwargs的区别
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌云的后面. 嗯,就是这样,我真是太TM机智了. 正 ...
- 限制 input 输入框只能输入纯数字
oninput = "value=value.replace(/[^\d]/g,'')"
- HTML5代码规范
HTML5代码规范html标签里面等号两边不要留空格在IE下可能会识别不了html5等号前后可以使用空格,但仍不推荐使用. HTML 代码约定很多 Web 开发人员对 HTML 的代码规范知之甚少.在 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- js监听页面是否在浏览器当前页面
在最近的一个socket项目中,需要监听客户端是否已读客服端发送的消息. 这里用到了html5中document新增了一个事件 visibilitychange,这个事件在页面前台或后台切换时被触发, ...