位置:首页 » 技术2 » javascript new构造器与对象详解

javascript new构造器与对象详解

日期:2016-05-24 阅读:0num
Advertisement

今天一个朋友问到js中的new是对象是干什么用的,我找了很多资料,下面有需要的朋友可以参考一下哦。

首先我们拆解为如下代码
JScript code

代码如下 复制代码
var str = function(){
return 'Hello world';
}
alert(new str());
var str1 = function() {
return new String('hello world');
}
alert(new str1())

这个代码和你之前的代码是一个意思,能理解吧。
好我们来实验下。
JScript code

代码如下 复制代码
var str = function(){
return 'Hello world';
}
alert(str);
var str1 = function() {
return new String('hello world');
}
alert(str1)

这个打印出来的结果大家也都是意料之中吧。也是显而易见的,不多解释了。
JScript code

代码如下 复制代码
var str = function(){
return 'Hello world';
}
alert(str());
var str1 = function() {
return new String('hello world');
}
alert(str1())

那么,顺着意思走到这里,得到的结果也无可厚非了。但是为什么,函数作为构造器得到的结果不一样呢。
JScript code

代码如下 复制代码

function str() {
return 'Hello world';
}

function str1() {
return new String('hello world');
}
alert(new str());
alert(new str1());

针对这样的问题,我们需要了解2样东西
1、new()干了神马事
很多童鞋都知道,new function()的时候,会返回this指针对象作为对象引用。但是如上面DEMO里没有this,而是直接return一个值呢。

我们看一个新的例子
JScript code

代码如下 复制代码
var test = 'hello world';
var test1 = new String('hello world');

function testStr(){
return test;
}
function testStr1() {
return test1;
}

alert(new testStr() == test);//outputs:false
alert(new testStr1() == test1);output:true

呀,是不是有点感觉了,但是却又还是搞不清为什么是这样?别急,我们继续看
JScript code

代码如下 复制代码

alert(test instanceof String);
alert(test1 instanceof String);

根据上面的例子,我们看到test不是instanceof String的。那么用typeof也可以看到test的TYPEOF是string。由此我们延伸出一个问题,字面量对象和构造器对象有什么区别么?回答:原型!!!!。
好了,我们在解决了第二个问题,由此可以推回我刚才说的第一个问题,new()做了什么,其实new 做了件我们需要知道的事。就是维护了原型链。
最后我做一个假设。因为我现在并不能确定我说的是否是对的。
JScript code

代码如下 复制代码
function func() {
}
var test = new func();
/* new的过程中做了如下的行为
var returnVal = new Object();
returnVal.prototype = this;//其中这一步未必如此,我们可以理解为复制阶段
if(returnVal is object) { //这个is是instanceof更贴切,或者就是说原型链中能找到继承自object
return returnVal;
} else
return obj;
*/
相关文章
  • javascript new构造器与对象详解

    今天一个朋友问到js中的new是对象是干什么用的,我找了很多资料,下面有需要的朋友可以参考一下哦. 首先我们拆解为如下代码 JScript code 代码如下 复制代码 var str = function(){ return 'Hello world'; } alert(new str()); var str1 = function() { return new String('hello world'); } alert(new str1()) 这个代码和你之前的代码是一个意思,能理解吧.

  • JavaScript字符串处理(String对象)详解

    定义字符串(String)对象 JavaScript String 对象用于处理文本字符串.创建 String 对象语法如下: 代码如下: <script language="JavaScript"> var str_object = new String( str ); var str1 = String( str ); var str2 = str; </script> 以上三种方法中,只有第一种是使用 String 构造函数严格的定义一个字符串对象,返回的

  • javascript的变量 数组 对象详解用法(1/2)

    * 1, 变量类型: JavaScript 是弱类型, 变量可存储任意类型, 并且运行期间类型可变; -> 变量可进行类型转换; */ /* 2, 变量声明: */ var i; var index; var i, index; var i = 0, index = 2; /* 变量声明, 无初始值时, 值为 undefined; 并且 var 声明的变量, 不能使用 delete 操作符删除; 重复声明为产生覆盖, 不会造成错误; 遗漏声明, 则会把变量隐式声明此变量, 并做为全局变量; (下

  • javascript null对象详解

    网页特效 null对象详解 null 这是一个对象,但是为空.因为是对象,所以 typeof null 返回 'object' . null 是 JavaScript 保留关键字. null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值: 表达式:123 + null 结果值:123 表达式:123 * null 结果值:0 以下是不正确的方法: var exp = null; if (exp == null) { alert("is null"); }

  • javascript History 对象详解介绍

    javascript History 对象详解介绍 有需要学习的朋友可参考一下. History 对象 History对象包含用户(在浏览器窗口中)访问过的 URL,History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问,没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象 History 对象属性 length声明了浏览器历史列表中的元素数量 语法:history.length; 实例:document.write(hist

  • javascript Window 对象详解介绍

    javascript Window 对象详解介绍 大家可参考一上. Window 对象 Window 对象表示浏览器中打开的窗口,如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象. Window 对象集合 frames[] 返回窗口中所有命名的框架,该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架或 <iframe> ,属性 frames.length

  • javascript Screen 对象详解介绍

    javascript Screen 对象详解介绍大家可参考一下. Screen 对象 Screen 对象包含有关客户端显示屏幕的信息,没有应用于 screen 对象的公开标准,不过所有浏览器都支持该对象,每个 Window 对象的 screen 属性都引用一个 Screen 对象 Screen 对象属性 availHeight声明了显示浏览器的屏幕的可用高度,以像素计,在 Windows 这样的操作系统中,这个可用高度不包括分配给半永久特性(如屏幕底部的任务栏)的垂直空间 语法:screen.a

  • 学习札记 JavaScript内置对象详解

    学习笔记 JavaScript内置对象详解 1.Date 属性(1): constructor 所建立对象的函数参考 prototype 能够为对象加入的属性和方法 方法(43): getDay() 返回一周中的第几天(0-6) getYear() 返回年份.2000年以前为2位,2000(包含)以后为4位 getFullYear() 返回完整的4位年份数 getMonth() 返回月份数(0-11) getDate() 返回日(1-31) getHours() 返回小时数(0-23) getM

  • JavaScript中原型和原型链详解 JavaScript中原型和原型链详解

    这篇文章主要介绍了JavaScript中原型和原型链详解,本文讲解了私有变量和函数.静态变量和函数.实例变量和函数.原型和原型链的基本概念,需要的朋友可以参考下 javascript中的每个对象都有一个内置的属性prototype,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用.意思是是prototype属性保存着对另一个JavaScript对象的引用,这个对象作为当前对象的父对象. 复制代码 代码如下: A.prototype = new B(); 理解pr

  • JavaScript的Date()方法使用详解

    这篇文章主要介绍了JavaScript的Date()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript的Date()方法返回今天的日期和时间,并且不需要任何对象被调用. 语法 ? 1 Date() 下面是参数的详细信息: NA 返回值: 返回今天的日期和时间 例子: ? 1 2 3 4 5 6 7 8 9 10 11 <html> <head> <title>JavaScript Date Method</title> &l

  • JavaScript中的Promise使用详解 JavaScript中的Promise使用详解

    这篇文章主要介绍了JavaScript中的Promise使用详解,promise对象是JS进阶学习中的重要知识点,需要的朋友可以参考下 许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures.JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口. 本文讲的是基于Promises/A 标准的JavaScript promises.[http://wiki.commonjs.org/w

  • JavaScript中的函数模式详解

    这篇文章主要介绍了JavaScript中的函数模式详解,本文讲解了创建函数的语法.函数表达式.命名函数表达式.函数的声明.函数声明与表达式.函数的提升.即时函数模式等内容,需要的朋友可以参考下 JavaScript设计模式的作用是提高代码的重用性,可读性,使代码更容易的维护和扩展 在javascript中,函数是一类对象,这表示他可以作为参数传递给其他函数:此外,函数还可以提供作用域. 创建函数的语法 命名函数表达式 代码如下: //命名函数表达式 var add = function add(

  • 深入了解JavaScript系列:《你真懂JavaScript吗?》答案详解

    深入理解JavaScript系列:<你真懂JavaScript吗?>答案详解 介绍 昨天发的<大叔手记(19):你真懂JavaScript吗?>里面的5个题目,有很多回答,发现强人还是很多的,很多人都全部答对了. 今天我们来对这5个题目详细分析一下,希望对大家有所帮助. 注: 问题来自大名鼎鼎的前端架构师Baranovskiy的帖子<So, you think you know JavaScript?>. 答案也是来自大名鼎鼎的JS牛人Nicholas C. Zakas

  • Javascript中的原形继承详解 Javascript中的原形继承详解

    Javascript中的原型继承详解 js中的继承,是面向对象的知识,因为js没有类的概念,所以继承是通过对象实现的,谈到继承,就必须说到prototype,就不得不先说下new的过程. 一个小小的列子: <script type="text/javascript"> var Person = function () { }; var p = new Person(); </script> 我们来看看这个new究竟做了什么?我们可以把new的过程拆分成以下三步:

  • Javascript沿袭两种形式详解

    Javascript继承两种形式详解 一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面.这里仅仅是把自己的学习体会拿出来分享一下,希望对大家学习Javascript有所帮助. Javascript本身是从Perl语言的语法演变而来的,本质上是脚本语言,随着版本的更新逐渐加入的对面向对象的模拟.我认为Js的面向对象模拟总体上做得还是不错的,因为我们不能盲从任何一种理念,不能纯粹的为了

  • jqPlot的Option配备对象详解

    jqPlot的Option配置对象详解 这里主要是参考jqPlot官方网站关于Option的介绍并结自己简单实践和理解来对Option的相关属性进行解释,如有不合适或错误的地方请指正. options = { seriesColors: [ "#4bb2c5", "#c5b47f", "#EAA228", "#579575", "#839557", "#958c12", "#9

  • HTML5拖拽效能中 dataTransfer对象详解

    HTML5拖拽功能中 dataTransfer对象详解 有了HTML5,老板再也不用担心我们的上传了,再加上有拖拽上传是不是很酷.百度一下,有关HTML5拖拽上传的文章和实例不少,都缺不了一个至关重要的东东DataTransfer.但是详细介绍的不多,尤其这个对象到底包含了哪些玩意. FQ出去问了下谷歌找到了DataTransfer的API,下面就介绍一下: DataTransfer 拖拽数据传递对象,一般使用方式event.dataTransfer. dataTransfer . dropEf

  • JavaScript中的execCommand()命令详解及范例展示

    JavaScript中的execCommand()命令详解及实例展示 execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用 如下格式:document.execCommand(sCommand[,交互方式, 动态参数]) ,其中:sCommand为指令参数(如下例中的"2D-Position"),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框(下例中的"false"即表示不显示对话框),

  • Intent对象详解(1)

    Intent对象详解(一) Intent的定义: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互.Intent这个英语单词的本意是"目的.意向.意图". 使用Intent启动系统组件: 三种应用程序基本组件--activity, service和broadcast receiver--是使用称为intent

  • java中Hibernate中的数据库对象详解

    本文章来给各位同学介绍一下关于 java中Hibernate中的数据库对象详解 ,希望此教程对大家会有所帮助. 1.hibernate.cfg.xml 代码如下 复制代码 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.d

最新文章
  • 非官方 Telegram 客户端 Dove 停止运营了?

    看了一下 Play 上的最后版本是 2015 年 5 月,非官方的功能都不能用了.但是搜不到消息,是放弃了吗? --cut-- chenggiant在2016-05-10 07:55:40回答到: 这个不是 @xiaolai 的项目么... jadecoder在2016-05-10 07:55:40回答到: @chenggiant 是的,不知道怎么了

  • GAME CENTER 注册不了

    很奇怪在最后一步那块卡住了 --cut--

  • 爱情和婚姻可分为四类 爱情和婚姻可分为四类

    爱情可分为四类:你爱的也爱你的,爱你的你却不爱的,你爱的却不爱你的,你并不真爱的也不真爱你的.第一类当然是皆大欢喜,即便不能相爱一生也不枉聚也不容易的绵绵情意.第二.三类的爱情有点苦,可其中爱着的那个人也不乏情真意切.第四类的爱情原本是个笑话,可也有把笑话当真话讲和听的,你不诚就"扰"了别人又怎么会得到别人的诚?脆弱的爱情里一定是有两个更脆弱的人. 本站阅读配图 又有人把婚姻也分为了四类:可心的,可过的,可忍的,不可忍的.我们都希望拥有第一类的婚姻,那是幸福到永远的楷模典范.但在现实生

  • 『摄影教室』15招教你拍好浪漫烛光照片 『摄影教室』15招教你拍好浪漫烛光照片

    再过不到一个月的时间,就是浪漫的情人节了.烛光必然是不可或缺的道具.本文就和大家讨论如何拍好浪漫烛光照片的话题. 你有没有试过用自己的数码相机拍摄烛光场景? 温暖的火苗照映着人物脸庞的照片非常美丽,但是拍摄这种弱光环境却不并容易. 这里有一些值得一读的小技巧,供你学习参考. 1. 关闭闪光灯 首先是最明显的一点.我们都经历过在弱光下自觉不自觉地打开机顶闪光灯,结果却发现现场气氛被破坏殆尽.如果想拍摄温暖的烛光,一定要关闭闪光灯.不过这一点也有例外的时候,下面的第15点就是例子. 2. 使用三脚架

  • 五年诺心,唯有用心 五年诺心,唯有用心

    诺心LECAKE 一个看似简单的名字 背后的意义却并不简单 将品牌名称拆开来看 诺.心 承诺.用心 代表着每一块蛋糕都是对消费者的用心承诺 "承诺会一直用心创造出完美蛋糕" 为此,品牌创立至今,五年的时间里 诺心一直在为之努力,时刻将品牌创立的初心铭记于心 用初心,安心,匠心,爱心,开心来诠释这份最初的信念 初心 秉承着对蛋糕的热爱 去创造出一个能给人带去甜蜜与欢笑的蛋糕品牌 为了实现这个甜蜜的梦想 品牌创始人CEO张岚女士Shirley更是 携手乔治五世巴黎四季酒店法国米其林三星餐厅

  • 有多少搜索流量是被浪费的 有多少搜索流量是被浪费的

    虽然我认为搜索引擎没有系统作弊的动机和需要,但是对搜索引擎广告而言,也并非像他们宣传的那样精准,因为大量的无效点击存在,是当下搜索引擎广告中最突出的问题. 其实搜索引擎自身已经对无效点击进行了一定的过滤,他们会想办法判断哪些是由人工或作弊软件产生的点击,哪些是由于其他公司抓取百度网页等产生的机器点击,哪些是由于人为原因或浏览器原因导致的连续多次点击等.例如,双击推广结果.浏览器自动多次刷新. 推广网页产生的点击,然后搜索引擎会自动将能够监控到的无效点击过滤掉,不计算客户的费用.即使这样.还是会有

  • 致敬光影缔造者 爱阅读推心理治愈图书电影疗伤 致敬光影缔造者 爱阅读推心理治愈图书电影疗伤

    一部电影是一个容器,36部电影就可以纳尽人生百味情感.音乐之声.肖申克的救赎.阿甘正传.雨人.勇敢的心--一个个闪光名字的背后,凝聚着一页页的光影重逢,每一部电影都是一个"心灵捕手",能够抚慰我们受伤的灵魂,倾听它的声音就可以从"心"启程. 将所有的精华浓缩于纸,便是这部由金跃军撰写而成的畅销图书<电影疗伤>,它不是一部单一的电影欣赏感悟,更像一把打开尘封心锁的钥匙,为读者寻得一段精神愉悦的时间和空间.现在,这部关注度颇高的图书已经在爱阅读平台上线,精彩

  • 在Linux系统中的时间转化方法详细介绍

    Linux时间转化方法: (1)date -d"2008年 12月 17日 星期三 17:27:22 CST" +"%s" 该命令将2008年 12月 17日 星期三 17:27:22 CST转化为时间戳 结果:1229515680 (2)将时间戳1123495443 换算成可以识别的年月日分秒 date -d '1970-01-01 UTC 1123495443 seconds' 结果:2005年 08月 08日 星期一 18:04:03 CST (3)date

  • ThinkPHP上安装配置百度的Ueditor在线编辑器 ThinkPHP上安装配置百度的Ueditor在线编辑器

    ThinkPHP是,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点.现在我们来学习将这两大开源的程序整合应用. 声明:最好大家都能写绝对路径的都写好绝对路径比如:window.UEDITOR_HOME_URL 在调用编辑器的时候首先先初始化一些值: 代码如下 复制代码 <script type="text/javascript" charset="utf

  • 12306删除常用联系人的图文教程 12306删除常用联系人的图文教程

    12306怎么删除常用联系人呢?新手进入到12306网站上发现自己添加的联系人不知道在哪里删除了,下面我们一起来看看它的删除方法了,希望例子能够帮助到各位同学,有兴趣的一起来看看吧. 1.我们在电脑中进入到"12306官网",然后点击"登陆"然后进入到界面,如下图所示. 2.使用自己的12306的输入自己的账号及密码之后登陆到我的12306界面,在界面中找到[常用联系人]然后点击进入. 3.然后进入之后我们再点击[常用联系人]选项,然后在此我们就可以看到自己以前添加

热门推荐
  • 回家了,外面太冷,想和家里的弟弟(8 岁,二年级)一起在家看一些有趣的纪录片或视频,求推荐..... 回家了,外面太冷,想和家里的弟弟(8 岁,二年级)一起在家看一些有趣的纪录片或视频,求推荐..... 谢谢^_^ --cut-- xiaomayi0323在2016-05-09 02:42:16回答到: discovery comanboy在2016-05-09 02:42:16回答到: 动物与自然. jhaohai在2016-05-09 02:42:16回答到: bbc 的纪录片 icreeper在2016-05-09 02:42:16回答到: 空中浩劫 重返危机现场 我就喜欢这类纪录片...... microchang在2016-05-09 02:42:16回答到: 8 岁你都不放过.. c
  • HTC概念平板曝光 外形酷似HTC One HTC概念平板曝光 外形酷似HTC One HTC One Tab概念平板 作为HTC 2013年度首款安卓旗舰手机,HTC凭借强悍的配置和完美的外形设计得到了外界的肯定.日前,国外设计师穆罕默德·马赫迪阿芝米(Mohammad Mahdi Azimi)收到HTC One的启发,设计出一款HTC概念平板电脑--HTC One Tab. HTC旗舰新机HTC One 从概念图中可以看出, HTC One Tab完全借鉴了HTC One的设计风格,机身的左右两侧分别设有两个超大的扬声器,整体看上去就像一部被拉宽的HTC One. HTC On
  • 宝宝如何睡出好“相貌” 宝宝如何睡出好“相貌” 宝宝出生时,头骨还是柔软的,还没有完全骨化,骨片之间尚有成长空隙,所以,宝宝的头型是具有可塑性的.而且宝宝颈部肌肉尚无力转动沉重的头部,当某一方位的骨片长期承受整个头部重量的压力时,就会影响头部形状的发育. 随着宝宝的不断成长,头骨的硬度也逐渐增加,骨缝密合,头型就很难改变了.调整宝宝头型的黄金时期是在宝宝出生后两个月内. 如果两个月以后发现宝宝头型不对称,或者不好看,在第3个月调整还来得及.3个月以上的宝宝头型就基本固定了.一周岁至一周岁半时,宝宝的囟门就会闭合,头形就固定了,再想改变就很难了
  • 网娱智信大数据分析,做好用户洞察是关键 网娱智信大数据分析,做好用户洞察是关键 说到网娱智信,很多业内人士都知道这是一家致力于网络互动营销业务的创新高科技 在互联网+这个比拼"眼球经济的大时代下,在很多品牌.企业成功的网络推广活动背后都能找到它的影子.通过走访,很多跟网娱智信有过合作关系或者正在紧密合作的企业对于其大数据工具都推崇备至,甚至用"先知"这个词来标榜自己这个合作伙伴.那么究竟网娱智信大数据工具会对企业产生哪些具体的帮组呢?或许这篇文章会给到读者一些启示 做好大数据分析的前提,需要全面采集数据样本 网娱智信可以实现对5亿网民.2万家网站.15种
  • 鼻子不通气怎么办 鼻子不通气怎么办 鼻子不通气就是鼻塞,通常是由感冒.鼻粘膜肥厚.鼻炎.空气干燥.身体缺水等原因形成的,虽不是什么大病,但却特别难受,尤其是孩子,无法清楚表达出病情,常常睡觉都需要张口呼吸,那鼻子不通气该怎么办,用什么方法比较好呢?马上为大家分享8个鼻子不通气的小妙招. 1.薄荷油 直接用鼻子闻薄荷油的味道,或者将少许的薄荷油抹在上唇,片刻,就能使鼻子通气.薄荷清香凉爽的特殊气味有助于通鼻,且具有疏风清热的功效. 2.鲜姜 将鲜姜洗净后切成小条状,在睡觉时,塞入鼻孔,3个小时候取出,一般一次就可以使鼻子通气.鲜姜可
  • 电脑点击开始菜单不能关机怎么办 电脑点击开始菜单不能关机怎么办 不知道大家有没有这种经历,点击开始菜单的时候关不了机,小编前几天在玩游戏之后就从开始菜单点击关机,结果半天没有反应,这种情况要怎么办呢,下面就跟着小编一起来看看吧,希望能够对你有所帮助. 开始菜单不能关机的解决方法: 1.按下WIN+R组合键,打开[运行]窗口: 2.在运行框中输入"regedit"→点击[确定]: 3.在注册表编辑器页面展开到"HKEY_CURRENT_USER/Control panel/Desktop": 4.在右边找到"Autoen
  • 《天天风之旅》小炎龙介绍 《天天风之旅》小炎龙介绍 为大家带来了天天风之旅小炎龙的详细介绍,很多玩家都还不知道要怎么获得这个宠物,以及这个宠物的相关属性,那么就来看看小编的介绍吧. 小炎龙 背景:生活在阔海南部半岛,性格怯懦,即使研习龙语的博学老者,也很难跟它们沟通.附近的岛民一般把青香蕉捣成糊糊,送到那些岩浆流域,供奉呈上.如果大快朵颐的代价,只是被抓住,那当然还是可以接受的. 品阶:S 宠物能力:制造无敌盾(P.S.:手残党的福音,妈妈再也不用担心我掉血啦) 满级装备:火龙之焰,虐杀时刻时间延长 建议组合: 搭配"忍者",双跳加分.