new初始化方法

简单没有return的就不写了

    function Person() {
this.name="hongda";
this.age=;
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=;
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返回的object

如果return返回的不是object时,那么就返回函数内部初始化的。

 function中有prototype情况

 function Person() {
this.name="hongda";
this.age=;
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=;
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返回的对象时,该初始化对象并不能获取prototype

反之就可以获取prototype.

特殊情况: 

Function:

 function Fun(){
this.a="a";
this.b="b";
}
function Person() {
this.name="hongda";
this.age=;
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=;
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:

function Person() {
this.name="hongda";
this.age=;
return new Date();
}
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=;
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=;
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=;
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();
for(var i=;i<;i++){
arr[i]=i;
}
function Person() {
this.name="hongda";
this.age=;
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=;
return [,,,,];
}
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();
for(var i=;i<;i++){
arr[i]=i;
}
console.log(typeof arr); var list=[,,,,];
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.

JavaScript new return 类的实例化的更多相关文章

  1. Javascript学习6 - 类、对象、继承

    原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...

  2. JavaScript中的类

          JavaScript类的相关知识 1.例子 /* 例1 */// 定义一个构造函数function Range(from, to){ this.from = from; this.to = ...

  3. JavaScript es6 class类的理解。

    本着互联网的分享精神,在本篇文章我将会把我对JavaScript  es6 class类的理解分享给大家. JavaScript 类主要是 JavaScript 现有的基于原型的继承的语法糖. 类语法 ...

  4. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

  5. javascript基础知识-类和模块

    在JavaScript中可以定义对象的类,让每个对象都共享这些属性. 在JavaScript中,类的实现是基于其原型继承机制的.如果两个实例都从同一个原型对象上继承了属性,我们就说它们是同一个类的实例 ...

  6. JavaScript 数据验证类

    JavaScript 数据验证类 /* JavaScript:验证类 author:杨波 date:20160323 1.用户名验证 2.密码验证 3.重复密码验证 4.邮箱验证 5.手机号验证 6. ...

  7. javascript继承(一)—类的属性研究

    本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...

  8. 创建Java类并实例化深入理解

    package com.sanguosha.java; import java.util.Scanner;//导入包 public class TestPerson { public static v ...

  9. 创建Java类并实例化的基本过程

    package com.sanguosha.java; /* * 面向对象实现的过程 * 1.创建类并设计类的成员(成员变量即属性and成员方法即方法) * 2.通过类来创建类的对象,也称类的实例化 ...

随机推荐

  1. 学习计划 nginx try_files的作用

    之前的nginx配置中,我链接了php和nginx之间是怎么通信和$_SERVER参数的作用. 现在有一个问题,我要配置自己的框架,我需要的参数的是 IP/控制器/方法/参数 但是现在配置的话ngin ...

  2. 如果要写php扩展啥的, 要看什么?

    1.写PHP扩展并不难 有一定C语言基础即可.切记一定要在Linux平台下开发,不要用Windows 这里有一篇博文,可以看下http://rango.swoole.com/archives/152 ...

  3. python 基础 集合

    集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 交集 并集 差集 子集  对称差集 list ...

  4. elasticsearch 通过外网访问

    elasticsearch 只能通过本地访问 需要修改  network.host: 0.0.0.0. 重新开启:提示错误: ERROR: [2] bootstrap checks failed[1] ...

  5. for练习相关

    for嵌套: 大圈套小圈思想:有一种重复的情况而这种情况每一次对应另外情况多次. ------------------------------------------------------- 例如: ...

  6. HDU5012:Dice(bfs模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=5012 Problem Description There are 2 special dices on the ...

  7. 最大流(EK)

    最大流 — Edmond Karp算法 Edmond Karp算法的大概思想: 反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束. 在寻找 ...

  8. 用python参加Kaggle的些许经验总结(收藏)

    Step1: Exploratory Data Analysis EDA,也就是对数据进行探索性的分析,一般就用到pandas和matplotlib就够了.EDA一般包括: 每个feature的意义, ...

  9. [lr] 基本色调调整和色调曲线

    基本色调调整 • 曝光度调整 ▶ 控制区域 在Lightroom中,软件提示我们曝光控制的是如图中间调的区域.我们把鼠标移动到曝光工具条上,软件会提示我们这个区域: ▶ 实际效果 ▪ 增加曝光值 增加 ...

  10. .NET MVC model数据验证

    MVC提供了很方便的数据验证,只需要在model里加入相关的正则等,那么就会在前台里生成相关的验证脚本.需要引用两个js文件: jquery.validate.min.js jquery.valida ...