热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:javascript中new运算符

篇首语:本文由编程笔记#小编为大家整理,主要介绍了javascript中new运算符相关的知识,希望对你有一定的参考价值。创建一个用户自定义的对象需要两步:

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Javascript中new运算符相关的知识,希望对你有一定的参考价值。


创建一个用户自定义的对象需要两步:

1、通过编写函数,来定义对象类型。


2、通过new来创建对象实例。





new的工作流程:


1、创建一个空对象(var obj = {};)


2、使该空对象继承于构造函数的原型(obj.__proto__ = Foo.prototype;)


3、使用指定的参数调用构造函数 Foo ,并将 this 绑定到新创建的对象。(Foo.call(obj, x, y, z);)


4、由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)


// 无返回值
function Foo() {
this.a = 1;
}
var obj = {}; // 1
obj.__pr0to__ = Foo.prototype; // 2
Foo.call(obj); // 3
{‘a‘: 1}; // 4
// 有返回值
function Foo() {
this.a = 1;
return {‘b‘: 2};
}
var obj = {}; // 1
obj.__pr0to__ = Foo.prototype; // 2
Foo.call(obj); // 3
{‘b‘: 2}; // 4

 

注意:第四步时,若返回的的值不是对象,或是null(null虽然是对象,但特殊),则使用步骤1创建的对象。





new关键字创建的对象,和普通对象的区别:


1、构造函数不同。(普通对象的构造函数是Object, new关键字对象的构造函数是自定义的。)


2、使用new关键字以原型的方式将user对象暴露到window对象中,不使用new关键字直接将user对象暴露到window对象中。


技术分享图片






Javascript中的原型链,继承,构造函数











推荐阅读
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
author-avatar
无极圈晨曦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有