JavaScript new return 類的實例化

new初始化方法函數

簡單沒有return的就不寫了this

    function Person() {
         this.name="hongda";
         this.age=28;
          return "fffffff";
        }
        var p = new Person();
        console.dir(p);
        console.log(typeof p);
        var pp=Person();
        console.log(pp);
        console.log(typeof pp);

     function Person() {
         this.name="hongda";
         this.age=28;
          return new String("fffff");
        }
        var p = new Person();
        console.dir(p);
        console.log(typeof p);
        var pp=Person();
        console.log(pp);
        console.log(typeof pp);

從上面能夠發現,若是返回的類型是object時,那麼構造函數初始化返回的就是return返回的objectspa

若是return返回的不是object時,那麼就返回函數內部初始化的。prototype

 function中有prototype狀況3d

 function Person() {
         this.name="hongda";
         this.age=28;
         return "fffff";
        }
        Person.prototype={
          school:"nanjing",
          say:function(){}
        }
        
        var p = new Person();
        console.dir(p);
        console.log(typeof p);
        var pp=Person();
        console.log(pp);
        console.log(typeof pp);

function Person() {
         this.name="hongda";
         this.age=28;
         return new String("ffffff");
        }
        Person.prototype={
          school:"nanjing",
          say:function(){}
        }
        
        var p = new Person();
        console.dir(p);
        console.log(typeof p);
        var pp=Person();
        console.log(pp);
        console.log(typeof pp);

能夠發現若是初始化返回的就是return返回的對象時,該初始化對象並不能獲取prototypecode

反之就能夠獲取prototype.對象

特殊狀況: blog

Function:io

 function Fun(){
 this.a="a";
 this.b="b";
 }
function Person() {
   this.name="hongda";
   this.age=28;
    return Fun;
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

function Person() {
   this.name="hongda";
   this.age=28;
    return new Function("var a='a';var b='b';");
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

Date:console

function Person() {
   this.name="hongda";
   this.age=28;
    return new Date(22222222222222);
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

Object:

 function Fun(){
 this.a="a";
 this.b="b";
 }
function Person() {
   this.name="hongda";
   this.age=28;
    return new Fun();
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

Boolean:

function Person() {
   this.name="hongda";
   this.age=28;
    return true;
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

function Person() {
   this.name="hongda";
   this.age=28;
    return new Boolean(true);
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

Array:

 var arr=new Array(5);
 for(var i=0;i<5;i++){
  arr[i]=i;
 }
function Person() {
   this.name="hongda";
   this.age=28;
    return arr;
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

function Person() {
   this.name="hongda";
   this.age=28;
    return [1,2,3,4,5];
  }
  Person.prototype={
    school:"nanjing",
    say:function(){}
  }
  var p = new Person();
  console.dir(p);
  console.log(p.toString());
  console.log(typeof p);
  var pp=Person();
  console.log(pp);
  console.log(typeof pp);

 

 

還有一些特殊的狀況

 var arr=new Array(5);
 for(var i=0;i<5;i++){
  arr[i]=i;
 }
 console.log(typeof arr);
 
 var list=[1,2,3,4,5];
 console.log(typeof list);
 
  var re = new RegExp("d(b+)(d)","ig");
  console.log(typeof re);
  
  var reg=/a\w+/g;
  console.log(typeof reg);

所有都是object

var fun=function(){}
console.log(typeof fun);
var fun2=new Function("var a='hong';var b=24;");
console.log(fun2);
console.log(typeof fun2);

結論:返回的是Object類型或者function類型的,那麼就返回return返回的,反之則返回實例化對象,一樣適用於Boolean.

相關文章
相關標籤/搜索