原生js学习笔记(三)

复制变量值分为两种情况

复制基本类型值变量:

var num1 = 5;

var num2 = num1;

此处num1与num2的值均为5,但是两个独立的Number类型,参与任何操作互不影响

复制引用类型的值:

var obj1 = new Object();

var obj2 = obj1;

obj1.name = "mark";

alert(obj2.name);        //"mark"

这说明obj1与obj2指向了同一个对象。 (这里要搞清楚两者的区别!)


检测基本数据类型时,用typeof

检测引用类型的值时,用instanceof


执行环境和作用域

当代码在一个环境中执行时,会创建变量对象的一个作用域链;用于保证对执行环境有权访问的所有变量和函数的有序访问。

全局执行环境的变量对象始终是作用域链中的最后一个对象。


js没有块级作用域(ES6中补充了!)

对于if语句或者for循环语句创建的变量即使语句执行结束,也会存在于循环外部的执行环境中;

不同的是,在函数体内部用var定义的局部变量,在函数体外是无法访问的。


查询标识符的搜索过程从作用域链的前端开始,向上逐级查询;即先从局部环境中找,若找到则停止,若找不到则在全局环境中找。


垃圾收集方式:标记清除、引用计数

标记清除是指当变量进入环境时,加上标记“进入环境”,此时不能释放内存,直到变量离开环境,将其标记为“离开环境”。策略是给存储内存的所有变量加上标记,然后去掉环境中变量及其引用变量的标记,这时仍有标记的变量被视为准备删除的变量。


引用类型

创建Object类型实例的两种方法:

1、使用new操作符后跟Object构造函数;var person = new Object();

2、对象字面量表示法;var person = { ..... };


Array类型

数组的length属性不是只读的,可以通过设置这个属性,从数组末尾移除或者向数组添加新项。

var array = ["a", "b", "c"];

array.length = 2;

alert(array[2]);          //undefined

分割线——

var array = ["a", "b", "c"];

array[array.length] = "d";     //在位置4添加字符串d

alert(array.length);    //  4


栈方法

push()方法将参数添加到数组末尾,并返回修改后数组的长度;

pop()方法从数组末尾移除最后一项,减少数组的length值,并返回移除的项。


队列方法

shift()方法移除数组的第一个项并返回该项,同时数组长度减1;

unshift()方法在数组前端添加任意个项并返回新数组的长度。


重排序方法

reverse()方法反转数组项的顺序;

sort()方法默认按升序(从小到大)排列数组项;sort()方法会调用每个数组项的toString()转型方法,比较得到的字符串确定排序。

sort()方法可以接受一个比较函数function compare()作为参数,接收小于0的数,不改变顺序;接收大于0的数,交换顺序;

这里的compare函数有三种写法:

function compare(a,b) {
	return a < b ? 1 : -1;
}
function compare(a,b){
	if(a < b){
		return -1;
	}else if(a > b){
		return 1;
	}else{
		return 0;
	}
}
function compare(a,b){
	return b - a;
}

操作方法

conncat()创建当前数组的一个副本,将接收到的参数添加到这个副本的末尾,返回新构建的数组;

slice()基于当前数组的一个或多个项创建一个新数组,可接收一或两个参数,分别表示返回项的起始和结束位置(返回起始位置和结束位置之间的项,不包括结束位置的项)                slice(0)经常用于数组的浅拷贝!

splice()主要用途是向数组中部插入项,始终会返回一个数组,包含从原始数组中删除的项

        删除:指定两个参数,要删除的第一项和删除的项数;

        插入:指定三个参数,起始位置、0(要删除的项数)、要插入的项;

        替换:指定三个参数,起始位置、要删除的项数、要插入的任意数量的项


位置方法

indexOf()接收两个参数,要查找的项和(可选)表示查找起点的位置;从开头向后找;

lastIndexOf()从末尾向前找

两个方法都返回要查找的项在数组中的位置,若没有找到则返回-1





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值