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. automation轻松“一点”,搞定裸机安装系统

    企业在新建数据中心.新业务上线.老业务扩容等场景下,会采购一批新的裸机服务器,在新服务器投入使用之前,势必得进行操作系统的安装.相信每个人都有安装操作系统的经历,BIOS设置.磁盘分区.驱动安装... ...

  2. vmware 安装 kali linux 系统到U盘 启动错误(initramfs:) 修复方法

    安装kalilinux到U盘 启动之后出现这个错误: 这是grub路径不对. 解决办法: 在这模式下可以输入命令:blkid 查看所列举出的磁盘 找到你的U盘系统 TYPE="ext4&qu ...

  3. Centos7网桥配置

    CentOS 的网桥虽然配置了很多次,不过总是记不住那几条,还是简单记录下,增加网桥可以通过brctl命令,但是为了简便快捷,直接生成配置文件即可 1.在/etc/sysconfig/network- ...

  4. 关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案

    在Ubuntu中,有时候运用sudo  apt-get install 安装软件时,会出现一下的情况 E: Could not get lock /var/lib/dpkg/lock - open ( ...

  5. maven工程插件配置

    <build> <!-- 该级工程会加载插件,放在父工程里 --> <plugins> <!-- 资源文件拷贝插件 --> <plugin> ...

  6. [LeetCode] 133. Clone Graph_ Medium tag: BFS, DFS

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  7. linq判断一个枚举的Name是否存在

    比如,枚举如下: [Serializable] public enum PayType : int { /// <summary> /// AAA /// </summary> ...

  8. Twitter OA prepare: Rational Sum

    In mathematics, a rational number is any number that can be expressed in the form of a fraction p/q ...

  9. SV中的数据类型

    Verilog-1995中规定的数据类型有:变量(reg), 线网(wire), 32位有符号数(integer), 64位无符号数(time), 浮点数(real). SV扩展了reg类型为logi ...

  10. python 爬取html页面

    #coding=utf-8 import urllib.request def gethtml(url): page=urllib.request.urlopen(url) html=page.rea ...