js函数2-函数调用
Posted _oldzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js函数2-函数调用相关的知识,希望对你有一定的参考价值。
1,上面第二条,可以用来判断当前是否是严格模式:
var strict = (function()return !this)();
2,方法调用链:
当方法并不需要返回值时,最好直接返回this,这样调用完后可继续调用其它方法,形成方法链。
3,构造函数调用时,创建一个新的对象,这个对象继承自构造函数的prototype属性,构造函数试图初始化这个新创建的对象,并将这个对象用做其调用上下文。尽管构造函数看起来像一个方法调用,它依然会使用这个新对象作为调用上下文。如表达式new o.m()中,this并不是o,而是创建的新对象。
4,如果构造函数有显式的return语句返回一个对象,那调用表达式的值就是这个对象。如果构造函数使用return语句但没指定返回值,或者返回一个原始值,那么将忽略返回值,还是使用新对象作为调用结果。
5,没有形参的构造函数调用都可以省略圆括号,比如下面代码是等价的。
var o=new Object(); var o = new Object;
6,函数形参与实参:
构造函数对传入的参数类型和个数都不会做检查,少的自动补充undefined,多的自动忽略。函数中arguments并不是真正的数组,它是一个实参对象。每个实参对象包含以数字为索引的一组元素以及length属性,但它不是真正的数组,是类数组。通过arguments访问的实参对象和通过传入的实参对象是同一个引用。
function f(x)
console.log(x); //输出实参值
arguments[0] = null;
console.log(x); //输出为null
严格模式中函数无法使用arguments作为形参名或局部变量名,也不能给arguments赋值。
arguments不定义了callee和caller属性,callee属性指代当前正在执行的函数。caller属性可以访问调用栈。callee常用在匿名函数的递归调用自身。这两属性在严格模式下使用会报错。
7,好的编程习惯不使用多个离散值作为形参,而是使用对象,函数内使用键值对取值。
以上是关于js函数2-函数调用的主要内容,如果未能解决你的问题,请参考以下文章