在JS的语法中,它遵循了很多普遍的规则,循环,条件,判断,枚举,反射,引用等等。
因为它的对象空间是一个很大的关联数组,因此不同的对象可以和原型隐蔽的相连,这造成了一定的问题:
首先,这本质是一个全局变量,让我们用起来很危险。但是,客服的办法非常的简单,但我们准备写一个小的模块的时候,为了避免全局变量的污染,可以私自声明一个空间。然后模块的所有对象从这个空间连接原型。
其次,是参数的初始化问题。因为对象的数组结构,我们可以不必在函数声明的时候定义固定的参数结构,甚至是数量,在对象创建的时候,所调用的函数会自动的附带两个参数:this,arguments。其中,this使得对新的创建具备了非常灵活的特点,arguments是一个like-array的结构,我们能使用它获得传给函数的任意形式的参数。
函数的调用涉及了初学者感到迷惑的小问题(造成这个为题的原因就是,JS想有一个类似面向对象语言的语法,其实,JS不是面向对象的语言,它是弱类型,弱连接,运行时加载的脚本语言,给人一种四不像的感觉,本质就是,创造JS的人们对全局变量也没有足够的信心。)
1、()小括号运算符 平时最常用的就是()运算符来调用一个函数
//无参函数fun1
function fun1() {
alert('我被调用了');
}
fun1()
//有参函数fun2
function fun2(param) {
alert(param);
}
fun2('我被调用了')
2、call
//无参函数fun1
function fun1() {
alert('我被调用了');
}
fun1.call(null);
//有参函数fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被调用了')
3 apply
//无参函数fun1function fun1() {
alert('我被调用了');
}
fun1.apply(null);
//有参函数fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被调用了'])
4、new (不推荐使用这种方式哦 )
//无参函数fun1
function fun1() {
alert('我被调用了');
}
new fun1();
//有参函数fun2
function fun2(param) {
alert(param);
}
new fun2('我被调用了')
用new方式调用函数时。如果存在返回值,当返回值是javascript的内置类型(基本类型)如字符串(String),数字(Number),布尔(Boolean)等时,将不会返回该值;当返回值是对象,函数,数组等对象类型时,将返回该对象,函数,数组。
所以,还是使用第一种办法比较好。
不管是简单还是复杂,JS的流行和日趋强大的关键原因是在web端对DOM模型的支持和Ajax的能力。我们可以使用JS很方便的调用dom的节点,使用内置的很多函数。