JavaScript new return 类的实例化
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 类的实例化的更多相关文章
- Javascript学习6 - 类、对象、继承
原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...
- JavaScript中的类
JavaScript类的相关知识 1.例子 /* 例1 */// 定义一个构造函数function Range(from, to){ this.from = from; this.to = ...
- JavaScript es6 class类的理解。
本着互联网的分享精神,在本篇文章我将会把我对JavaScript es6 class类的理解分享给大家. JavaScript 类主要是 JavaScript 现有的基于原型的继承的语法糖. 类语法 ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
- javascript基础知识-类和模块
在JavaScript中可以定义对象的类,让每个对象都共享这些属性. 在JavaScript中,类的实现是基于其原型继承机制的.如果两个实例都从同一个原型对象上继承了属性,我们就说它们是同一个类的实例 ...
- JavaScript 数据验证类
JavaScript 数据验证类 /* JavaScript:验证类 author:杨波 date:20160323 1.用户名验证 2.密码验证 3.重复密码验证 4.邮箱验证 5.手机号验证 6. ...
- javascript继承(一)—类的属性研究
本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...
- 创建Java类并实例化深入理解
package com.sanguosha.java; import java.util.Scanner;//导入包 public class TestPerson { public static v ...
- 创建Java类并实例化的基本过程
package com.sanguosha.java; /* * 面向对象实现的过程 * 1.创建类并设计类的成员(成员变量即属性and成员方法即方法) * 2.通过类来创建类的对象,也称类的实例化 ...
随机推荐
- java实现从服务端下载文件
这边用一个简单的servlet实现java从服务端下载文件的操作 写一个servlet: <servlet> <servlet-name>DownloadServlet< ...
- fork 了别人的仓库后,如何将自己的代码和原仓库保持一致
fork 了别人的仓库后,如何将自己的代码和原仓库保持一致 git remote add upstream http:// git fetch upstream
- jquery两稳定版本比较~~
jquery历经了多个版本的更新,版本上的比较貌似没什么必要性,一般来说新的版本会比旧的版本各方面都略有提升,但由于新版中增加了各种新的功能,难免会引起bug的发生.评估一个版本是否适合当前开发场景使 ...
- [运维-安全]CentOS7.0环境下安装kangle和easypanel
一.康乐简介 主要特点1.免费开源kangle技术团队希望国人拥有一款真正好用.易用.实用的国产web服务器.2.跨平台可在linux.windows.freebsd.openbsd.netbsd.s ...
- vue学习之node.js
Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.本文详细介绍了No ...
- 关hashMap跟hashTable的区别
1.HashMap和Hashtable都实现了Map接口 2.HashMap是非synchronized,而Hashtable是synchronized 3.HashTable使用Enumeratio ...
- JSP页面中引入另一个JSP页面
一个JSP页面中引入另一个JSP页面,相当于把另一个JSP页面的内容复制到对应位置: <%@include file="date.jsp" %> 一般页面的top和bo ...
- 什么是anaconda【转载】
转自:https://zhidao.baidu.com/question/525102108723657245.html https://zhidao.baidu.com/question/62475 ...
- java多态性方法的重写Overriding和重载Overloading详解
java多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类 ...
- Spring Security中异常上抛机制及对于转型处理的一些感悟
在使用Spring Security的过程中,我们会发现框架内部按照错误及问题出现的场景,划分出了许许多多的异常,但是在业务调用时一般都会向外抛一个统一的异常出来,为什么要这样做呢,以及对于抛出来的异 ...