javascript不常用的系列一(引用类型)

引用类型

(一)Object类型:
1.使用[]的方法来访问对象属性,其中属性放在[]中必须时字符串的形式。
2.这样一来相比较与使用 . 的方式访问属性有个好处,就是当属性不规则时只能使用[],如: [‘is-default’]。也可以是变量。
(二)Array类型:
1.字面量创建数组,不建议在[]中结尾多些逗号。如:[1,2,1,3,].原因是他可能创建2项或者3项的一个数组。在IE8及之前的版本都是创建3项的数组,之后都是两项的数组。
2.确定一个对象是不是数组,采用Array.isArray()方法,支持情况:IE9+,及其他。
3.sort()方法,会隐式的调用数组每一项的toString()方法,然后比较的时字符串。没有例外。比较函数返回1(升序),比较函数返回-1(降序)
4.es6迭代方法:(以下操作都不会修改原数组)
every():每一项都返回true,结果返回true
some():任意一项返回true,结果返回true
filter() : 返回true的项组成的数组
forEach(): 没有返回值
map(): 返回每次调用的结果组成的数组
(三)Function类型:
函数内部属性arguments和this。arguments还有个属性叫做callee,该属性时一个指向拥有arguments对象的指针。如:

//不使用arguments.callee
function factorial(num) {
    if(num<=1){
        return 1;
    }else{
        return num*factorial(num-1);
    }
}
//使用arguments.callee
function factorial(num) {
    if(num<=1){
        return 1;
    }else{
        return num*argunemts.callee(num-1);
    }
}
//好处:减少代码内部与函数名的耦合关系,提高复用性

另外一个属性caller。这个属性保存着调用当前函数的函数的引用。如:

function outer() {
    inner()
}
function inner() {
    alert(inner.caller)
}
outer() //outer函数
//为了降低耦合还可以这样
function outer() {
    inner()
}
function inner() {
    alert(arguments.callee.caller)
}
outer() //outer函数

再来说说apply()call();
作用:都是在特定的作用域中调用函数,实质时改变函数里面this对像的值。
区别:传参数方式不相同。
apply(作用域,参数数组)接受两个参数。
call(作用域,传递给函数的参数1,传递给函数的参数2,…传递给函数的参数n),每个参数都必须详细列出来。
eg:

function sum(num1,num2) {
    return sum1+sum2;
}
function applysum(num1,num2){
    return sum.apply(this,arguments);
    //return sum.apply(this,[num1,num2])
}
applysum(1,3)
function sum(num1,num2) {
    return sum1+sum2;
}
function callsum(num1,num2){
    return sum.call(this,num1,num2)
}
call(1,3)

但这两个函数真正强大的地方时扩充函数赖以运行的作用域。如:

window.name='dhq';
var obj = {
    name: 'dhq2'
}
function sayName() {
    alert(this.name)
}
sayName() //dhq
sayName.call(this) //dhq
sayName.call(window) //dhq
sayName.call(obj) //dhq2

String类型
localeCompare()方法比较两个字符串,
eg:’yellow‘.localeCompare(‘red’) //1
’yellow‘.localeCompare(‘zoo’) //-1
’yellow‘.localeCompare(‘yellow’) //0
规则:按字幕表的排序,(red)字符串参数在(yellow)字符串前面,返回1,
evel()方法
将字符串转为js脚本,从而执行js脚本,最好不用这个方法,安全性太差。

Math类型
max()和min()
eg:返回数组中的最大数或着最小数
let arr=[1,101,12,1223,1,45];
let max = Math.max.apply(Math,arr);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值