JS学习2(继续更新)

1. 访问对象属性的另类方法
eg:var person=new Object();
person.name=“xs”;
person.age=16;
当要访问person的属性时,也可以使用[]的形式,如:
==person[“name”]==但是访问的属性如name要以字符串的形式。
这种形式的好处是 可以通过其他变量来访问属性比如:
在这里插入图片描述
如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。
person[“first name”]=“XS”;当属性名中包含有非字母非数字时,不能用点表示法来访问,但是可以使用 [] 来进行访问。
但是除非在特殊情况下使用变量访问属性,否则一般情况下还是使用点表示发来进行访问。
2. Array数组
创建方法:如果传递的是数值,则会按照该数值创建包含给定项数的数组;而如果传递的是其他类型的参数,则会创建包含那个值的只有一项的数组,如下:
var colors=new Array(3) //表明创建一个包含三项的数组
var names=new Array(“XS”) //表明创建一个包含1项的数组。
或者使用字面量的形式如下:
var colors = [“red”, “blue”, “green”]; // 创建一个包含 3 个字符串的数组
var values = [1,2,]; // 不要这样!这样会创建一个包含 2 或 3 项的数组这是因为浏览器的解析不同!!!
当向上述在字面量中的最后一项添加逗号会产生以下情况:
在IE中,values会是包含3项即1、2和undefined值的数组
在其他浏览器中,values是包含2项即值为1、2的数组。

var options = [,]; // 不要这样!这样会创建一个包含 5 或 6 项的数组
在IE8以及早期版本中,上述options会包含6项的数组。
在IE9+以及chrome、firefox中会包含5项。

3. for-in
使用for-in循环之前最好判断对象的值是不是null或者undefined,因为如果是null或undefined,for-in会报错。ECMAscript5更正为不抛错误只是不执行循环体。
4.with对象
将代码的作用域设置到一个特定的对象中。严格模式下不允许使用with语句,因为会视为语法错误。而且with语句里的代码很难优化,运算速度也比不用with时要慢很多,因此尽量避免用with
with(expression)
statement
**5. 检测数组 **
instanceof(): 在同一个网页或者一个全局作用域而言,可以使用instanceof就够了。若是网页中包含多个框架,当从A框架向B框架传入一个数组时,那么传入的数组与第二个框架原生创建的数组分别具有不同的构造函数Array.isArray():可以最终确定这个值是不是数组,无需管它是哪个全局环境创建的。
6.迭代方法

—every():对数组中的每一项都运行给定函数,如果每一项都返回TRUE,那么最后返回TRUE。
—some():对数组中每一项运行给定函数,如果任一项返回TRUE那么多最后返回TRUE。
在这里插入图片描述
—filter():对数组中的每一项运行给定函数,返回运行该函数后会返回TRUE的结果组成的数组。
在这里插入图片描述
—forEach():对数组中的每一项运行给定函数,没有返回值。foreach中不能中断循环,不能用break会报错在这里插入图片描述

let a = ['a', 'b', 'c'];
a.forEach(function(element) {
    console.log(element);
});

—map():对数组中的每一项运行给定函数,返回给定函数调用后的结果组成的数组。注意:map不会对空数组进行检测;不会改变原数组。
用法:map(function(currentValue,index,arr){…}): currentValue是必须的;index当前元素的索引值,可选;arr当前元素属于的数组对象,可选
在这里插入图片描述

以上方法不会修改数组中包含的值。

对比map和forEach循环遍历数组
1.map速度比forEach快,
2.map返回数组所以可以链式操作;foreach不会产生新数组,foreach返回undefined。

foreach以及for-in、和for-of对比
for-in一般用于循环枚举对象!!!
foreach循环数组,但是不可以中断循环。
for-of:JS6引入的,弥补了foreach和for-in的短板。

7. 归并方法
reduce():从数组的第一项开始逐个遍历到最后,从左至右开始缩减最终计算为一个值。注意:对于空数组不会执行回调函数。
用法:array.reduce(function(total, currentValue, currentIndex, arr){},initialValue)
preValue必须,初始值或者前一次回调函数的返回值;
currentValue必须,当前正在处理的元素;
currentIndex可选,当前正在处理的元素的下标;
arr可选;
initialValue:可选,表示赋予回调函数的初始值。
在这里插入图片描述
用上例作说明,若没有initialValue,那么prevalue从values数组的下标为0的元素1开始;若是有initialvalue,那么prevalue的值是initialvalue的值,currentvalue对应的是下标为0的元素1,有initialvalue会比没有initialvalue的情况多递归一次累加。
具体可参考:https://www.cnblogs.com/jinling/p/6169008.html

8. 日期对象
getMonth():返回日期中的月份,0表示一月份,11表示十二月。
getDay():返回日期中的星期几,0表示星期日,6表示星期六

猜你喜欢

转载自blog.csdn.net/Qian_mos/article/details/85175882