JavaScript之构造函数内有return详解

来源:互联网 发布:中小企业网络搭建 编辑:程序博客网 时间:2024/05/22 03:52

默认情况下,我们的构造函数是没有return语句的,构造函数里面的this会指向将来实例化对象的,也就是new Object()后的对象。

但是如果,构造函数里面添加return,会怎么样呢?

首先来看案例:构造函数function Person(){} ,实例化对象new Person。以下就是构造函数中return不同数据,实例化对象也会返回不同数据:

<script>    function Person(){//      return 123;                         //值类型//      return "abcdef";                    //值类型//      return ["a","b"];                   //引用类型//      return {a:2};                       //引用类型         return function(){ console.log(1)};   //引用类型 }     Person.prototype.sayHello =           function() {             console.log('hello world');     };     console.log(new Person());//new Person()分别返回以下://        1. Person{}//        2. Person{}//        3. ["a","b"];//        4. Object {a:2}//        5. function(){ console.log(1)};</script>

可以看出:在JavaScript构造函数中:如果return值类型,那么对构造函数没有影响,实例化对象返回空对象;如果return引用类型(数组,函数,对象),那么实例化对象就会返回该引用类型;

function Super(a){    this.a=a;    return 123;}Super.prototype.sayHello=function(){     console.log("Hello")}function Super1(a){     this.a=a;     return {a:2};}Super1.prototype.sayHello=function(){     console.log("Hello")}console.log(new Super(1));      //返回Super{a:1},有原型方法sayHelloconsole.log(new Super1(2));     //返回Object{a:2},没有原型方法sayHello



Demo源码地址:https://github.com/spicyboiledfish/JavaScript-testJS

2 0
原创粉丝点击