字面量 与 new 两种方式的用法和区别?
一 : 字面量方式和new方式
- 每次创建数组或对象的时候,都能用以下两种方法创建:那有什么区别呢?还有哪些可以有这两种方法呢?我到底用哪一种呢?
-
var arr = [];//字面量方法创建数组 var arr = new Array();//实例化构造函数方法创建数组 var obj = {};//字面量方法创建对象 var obj = new Object();//实例化构造函数方法创建对象
二 : 哪些对象可以new?
- 只要存在构造函数的都可以new出来。基本上来说 js中对象,除了null ,undefined,其他的都是可以用new出来的。
-
var num = new Number(); var boo = new Boolean(); var str = new String(); var arr = new Array(); var obj = new Object(); var fn = new Function(); var reg = new RegExp(); var date = new Date();
-
三 : 字面量是什么?
-
字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量。
-
JavaScript支持字面量,允许使用一种简洁而可读的记法来创建对象、数组
-
字面量分为:字符串字面量(string literal )、数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(function literal)等等。
-
var num = 1; var boo = true; var str = "a"; var arr = []; var obj = {}; var fn = function(){}; var reg = /\s/g;
四 - 两种的区别
- 字面量语法简单,直接,优雅
- 也没有必要去使用new去调用构造方法,减少代码,减少代码运算量。
那new这个操作符到底做了什么?
var arr = new Array();
/*
new:
1:var obj = {};
2:obj.__proto__ = Array.prototype;
3:Array.call(obj);
*/
五 - 使用哪一种?
- 字面量比new高效
比如:{}是字面量,可以立即求值
- 而new Object()本质上是方法(只不过这个方法是内置的)调用, 既然是方法调用,就涉及到在proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的堆栈信息,方法调用结束后,还要释放该堆栈。
CSDN-Ada助手: 恭喜您!第20篇博客“PS 图像合成基础”非常精彩。您的持续创作展现出您对PS图像合成的深入理解和熟练技巧,令人钦佩。不仅仅是标题所显示的基础知识,您能否在下一篇博客中分享一些高级技巧或者实用的应用案例呢?期待您的下一步创作,谢谢您的分享!
CSDN-Ada助手: 恭喜您撰写了第19篇博客!标题中的“PS 的基本认识及操作”非常吸引人,对于许多对于Photoshop感兴趣但初学者来说,这篇博客一定非常有帮助。您的内容肯定能够帮助读者更好地了解和掌握PS的基本知识和操作技巧。 在下一步的创作中,或许您可以考虑扩展一下内容,比如介绍一些高级的PS技术或者分享一些实用的技巧和窍门。这样,读者们能够进一步提升他们的设计技能,并且对您的博客更加依赖。继续保持谦虚的态度,您一定会取得更大的成就!加油!
CSDN-Ada助手: 恭喜您写了第18篇博客!对于AJAX的解释非常清晰易懂,让我受益匪浅。希望您能继续分享更多关于前端开发的知识和经验,或许下一篇可以深入探讨AJAX与后端交互的实践应用,期待您的精彩分享!
CSDN-Ada助手: 恭喜您撰写了第17篇博客!标题中的"排他思想"引起了我的兴趣。在编程中,排他思想的运用可以帮助我们解决许多问题。我很期待阅读您的观点和见解。 在下一步的创作中,或许可以探讨一些应用排他思想的具体案例,或者分享一些在实际编程中遇到的挑战与解决方法。当然,这只是一个建议,您可以根据您自己的兴趣和经验来选择下一篇博客的主题。期待您继续创作,并与我们分享更多有启发性的内容。加油!
CSDN-Ada助手: 恭喜博主写了第16篇博客!对于高阶函数的解释清晰易懂,让我受益匪浅。希望博主能够继续保持创作的热情,可以考虑深入探讨高阶函数在实际应用中的案例,或者结合其他相关概念进行更深入的探讨。期待博主更多精彩的文章!