直接打电话
直接调用函数是最常见、最常见的方法。 函数附加的对象直接作为调用者,通过在函数后面的括号内传递参数来调用函数。
例如:
window.alert("测试代码");
如果调用者是窗口,可以省略,即直接alert("测试代码");
使用 call() 调用该函数
句子模式:call([thisObject[,arg1[,arg2[,...,argn]]]]);
新朋友似乎直接调用就够了,虽然不然,直接调用函数的方法简单易用但不够灵活。 有时在调用函数时,需要动态传入函数引用。 这时,为了动态调用该函数,只需要使用call方法来调用
例如:
var each =function(array,fn)
{
for(var index in array)
{
fn.call(null,index,array[index]);
}
}
each([4,20,3],function (index,ele)
{
document.write("第"+index+"个元素是"+ele+"
");
}
);
乍一看可能会头晕。 注意fn.call这句话。 call调用的格式是在参数中先填写调用者,然后按顺序输入参数。 参数方法有很大不同。 与直接调用不同,上面没有写调用者,而是参数的第一项。 格式:fn.call(obj,args);
听到这里,你应该对call和direct call的区别有疑问。 不同的是调用改变了this指针的指针。 如果在被调用的函数中没有使用this,就不会有什么区别。
这是另一个例子,其中被调用的函数有一个 this 指针:
var x = "我是全局变量"; //定义全局变量x
function a(){ //定义函数类结构a
this.x = "我是在函数类结构a中声明的哦";
}
//定义普通函数,弹出当前指针所包含的变量x的值
function f(){
alert (this.x);
}
//返回值为“我是在函数类结构a中声明的哦”
f.call(new a());
我的理解是f.call(newa())就是将函数(虽然也是一个对象)f复制到被调用的对象“newa()”中进行分析。 其实下面代码的分析结果是一样的:
function a(){
this.x = "我是在函数类结构a中声明的哦";
alert(this.x);
}
a();
事实上,当调用f.call()时,f()中的this指针被改变。 本来,f中的this.a和this.b属性是自己的,而当f.call()调用时,传入了一个新的对象e()(this)调用函数 javascript,这样e就绑定到了f中的this调用函数 javascript,最初为 f 降低的属性已添加到 e 中。 (e和e(),f和f()是等价的)有点类似“继承”,不过这在JS里应该叫对象伪装
使用 apply() 方法调用该函数
apply()方法的功能与call()方法类似,都可以用来动态调用函数。 apply() 和 call() 的区别如下:
句子模式:apply([thisObj[,argArray]]);
例如,下面两个句子是等价的:
myfun.call(window,12,13);
myfun.capply(window,[12,13]);
在改变this指针方面,apply()和call()也是一致的,
一般来说,apply()和call()只是传递参数的方式不同。
调用部分的第二个反例引用了以下博主:
推送、移位、弹出、拼接、排序、反转、连接、连接、拆分
一。通过为下标编制索引来操作字段
1.通过索引下标,调用字段,指定单位的数据
var arr = ['北京','上海','广州','重庆','天津'];
arr[0] ---> 调用索引下标是 0 ,实际是第一个单元的数据 北京
2. 通过索引下标更改存储在字段中的单位数据
对于现有的索引下标,执行形式参数,执行重复的参数,这将覆盖之前存储的数据
arr[0] = '武汉';
控制台.log(到达);
3. 通过索引下标添加链表的一个单元
对不存在的索引下标执行形式参数是添加链表单元格的操作
连续索引
arr[5] = '郑州';
间隔索引
arr[100] = '瞎写的';
console.log(arr);
console.log(arr[50]); → undefined
4. 通过索引下标删除链表的单位
定义链表的长度宽度属性,并删除
通过定义字段的单元格数来链接列表单元格只能从链表
的末尾删除,而不能从链表的开头删除
一般不使用,除非有必要限制字段的宽度
arr.length = 100;
arr.length = 6;
console.log(arr);
二。在字段中添加或删除单元格及其返回值
unshift() 以一个或多个开头
push() 结束加法,可以是一个或多个
shift() 只能在开头删除
pop() 只能是一个
摘要:新增内容可以是一个或多个
一次只能删除一个
1.在数组的开头和结尾---添加单元格
数组变量 .unshift(新数据)在链表的开头添加一个单元格
数组变量 .unshift(data1, data2, data3...) 可以添加多个介于两者之间带有冒号间隔的单元格
添加写入多个字段变量时,链表中从下到上的写入顺序是从左到右
新单位可以是任何 JavaScript 支持的数据类型
数组变量 .push(新数据)在链表末尾添加一个单元格
数组变量 .push(data1, data2, data3...)可以添加多个单元格,结肠间隔在
他们
添加写入多个字段变量时,链表中从下到上书写的顺序是从右到左
新单位可以是任何 JavaScript 支持的数据类型
push() 是向字段添加内容的最常见方法
var arr = ['北京','上海'];
arr.unshift('武汉');
arr.unshift('武汉加油','武汉棒棒哒');
arr.unshift([1,2,3,4,5]);
arr.unshift(function fun(){console.log(123)});
arr.unshift( {name:'张三'} );
arr.push('武汉');
arr.push('武汉加油','武汉棒棒哒');
arr.push([1,2,3,4,5]);
arr.push(function fun(){console.log(123)});
arr.push( {name:'张三'} );
2. 从链表中删除单元格
Array.shift(什么都不写,写没用)只能删除第一个启动的单元
Array.pop(什么都不写javascript数组的方法,写没用)只能删除最后最后一个单元
arr.shift();
arr.pop();
console.log(arr);
3. 链表操作方法(添加或删除单元格)的返回值。
unshift() push() shift() pop()
函数是
操作链表,返回值是写入函数内部定义的返回值
unshift() push() 添加一个单元格操作,返回值是新单位之后数组的新宽度javascript数组的方法,即 length 属性值
shift() pop() 删除单元格操作,返回值是删除单元存储的数据
删除单元,也称为抛掷释放消除
var arr = [1,2,3,4,5];
定义一个变量来存储返回值,但也可以直接输出操作
操作完成后,执行新单元格,数组为新宽度
var res1 = arr.unshift('北京');
var res2 = arr.push('北京');
console.log(arr);
console.log(res1); → 6
console.log(res2); → 7
删除操作移位,弹出,返回值为已删除单位的数据信息
var res3 = arr.shift();
console.log(res3); → 北京
三。截取链表的指定单元格/删除链表的指定单元格及其返回值
var arr = ['北京','上海','广州','重庆','天津'];
删除广州重庆
方法1,从结束位置删除3个单位
然后添加天津
方法 2, array.splice().
参数 1:删除起始单位的位置 - 索引下标
参数 2:要删除的单元格数 - 从起始单元开始删除多个单元格
参数 3:在已删除位置插入新数据
将插入的数据(不写入)或一个或多个数据替换为多个单元格之间的冒号间距
它的内容可以是任何JavaScript支持的数据类型
从索引下标开始是 2,这是第三个单元格,删除 2 个单元格
运算结果的返回值是由删除单元组成的存储数据信息
var res = arr.splice(2,2);
console.log(arr);
console.log(res);
如果只写入一个参数,则首先删除位置,然后删除所有后续单位,包括起始位置单位
arr.splice(2);
如果不写参数,则没有疗效
arr.splice();
编写三个单元来执行治疗效果类似于替换操作
从索引下标为 2(实际上是第三个单元格)开始,删除 2 个单元格(包索引 2 的单位)。
然后替换插入的数据武汉,来吧
var res2 = arr.splice(2,2,'武汉','加油');
console.log(arr);
console.log(res2);
四。数组的排序方式
根据数值的大小对链表中的数据进行排序
默认情况下,array.sort() 根据第一个数值进行排序,而不是根据值的实际大小进行排序
数字 .sort( function(a,b){return a-b} ) 按值的实际大小排序 — 从小到大
数字 .sort( function(a,b){return b-a} ) 按数值的实际大小排序 — 从大到小
var arr = [3,21,3215432,321321,32,43,5,34,43,23,32543,1234,45,321,14,234,4];
默认情况下,数组的排序方法是根据第一个数值进行排序,而不是根据数值的实际大小进行排序
arr.sort();
从小到大的固定句型
arr.sort( function(a,b){return a-b} )
从大到小的固定句型
arr.sort( function(a,b){return b-a} )
控制台.log(到达);
五。数组反转
array.reverse();
数组的反转会更改原始字段的内容
例如,在新闻信息显示中,数据库和数组中的最新新闻反转到顶部以首先显示
var arr = ['北京','上海','广州','重庆','天津'];
arr.reverse();
console.log(arr); → 原数组倒着写
六。阵列拼接数组
1.concat(数组 2)。
将两个链表拼接成一个链表
在未来,
两个链表的数据内容将被拼接
var arr1 = [1,2,3,4,5];
var arr2 = ['北京','上海','广州','重庆','天津'];
var arr3 = arr1.concat(arr2);
console.log(arr3);
七。链表和字符串的转换
数组 .join() 不会更改原始字段的内容
返回值为字符串类型,内容为链表中每个单元格存储的数据信息,默认使用冒号间隔
按照手动转换准则将其他数据类型转换为字符串类型
var arr = ['北京','上海','广州','重庆','天津',true,false,100,[1,2,3,4],{name:'张三'},function fun(){}];
默认冒号间隔
var res1 = arr.join();
设置间隔符号
var res2 = arr.join('-');
没有间隔符号,设置空字符串作为间隔
var res3 = arr.join('');
console.log(arr);
console.log(res1);
console.log(res2);
console.log(res3);
八。字符串转换为链表
将字符串、剪切存储为链表的方法
字符串 .split 不会更改原始字符串
返回值为:根据字符串转换为链表
语法 1:在不定义参数的情况下,将整个字符串转换为链表的一个单元
语法 2:将参数定义为 '' 空字符串将每个字符转换为一个单位
语法 3:可以根据特定的间隔符号拆分字符串
在存储单元数据内容中,没有间隔符号
语法4:设置第二个参数,即设置链表的单元格数量,即长度宽度
一般不写
根据间隔符号 - 减号拆分字符串并以链表模式存储它们
并将链表设置为 3 个单位 北京
var str1 = '北京-上海-广州-天津-重庆';
var res4 = str1.split('-' , 3);
console.log(res4);
回顾
数组的操作方法
1. 索引下标操作
数组 [索引下标] 获取存储在索引下标中的数据
数组 [索引下标] = 数字;
如果索引下标已存在,则为参数更改操作
如果索引下标不存在,则为新单元操作
2、长度特性
数组的宽度,即单元格数
.length 数组获取链表中宽度的属性
array.length = 值 设置链表的宽度,可以删除多余的单元格
数组 .length -1 是最后一个单元格的索引下标
三、数组常用操作方法
我们使用JavaScript为我们封装的函数
(1) 新增和删除
unshift 首位新增
push 末位新增
新增可以是一个或者多个单元,返回值是操作之后,数组新的长度
shift 首位删除
pop 末位删除
删除一次执行删除一个单元,返回值是删除单元,存储的数据
(2) 截取/替换
数组.splice()
语法1 : 不定义参数,无效果
语法2 : 定义一个参数
从定义的索引下标开始(包括),截取之后所有的单元
语法3 : 定义两个参数
从定义的索引下标开始(包括),截取设定个数的单元
语法4 : 定义三个参数
从定义的索引下标开始(包括),截取设定个数的单元
使用定义的数据替换
定义的数据,可以是一个或者多个,支持所有JavaScript数据类型
返回值 : 是截取的单元内容
(3) 排序
数组.sort() 默认按照首字符串大小排序
数组.sort(function(a,b){return a-b}) 按照数值,从小到大排列
数组.sort(function(a,b){return b-a}) 按照数值,从大到小排列
(4) 其他方法
数组.reverse() 倒序,影响原来的数组
数组.join() 数组转化字符串,不会影响原来数组
字符串.split() 字符串转数组,不会影响原来数组
数组.concat() 数组拼接