JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

时间:2021-09-18 11:21:40

函数声明

JavaScript中声明函数的方式:(无需声明返回值类型)
function add(i1, i2) {
            return i1 + i2;//如果不写return返回的是undefined
        }
int add(int i1,int i2)//C#写法
不需要声明返回值类型、参数类型。函数定义以function开头。
        var r = add(1, 2);
        alert(r);
        r = add("你好", "tom");
        alert(r);
JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
易错:自定义函数名不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。//不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)

函数声明时注意{ }的位置
推荐写法:
function fun(){
}
一般在js中编写大括号都是直接跟在后面而不要另起一行,比如:
return {Name:’yzk’,Age:18};而不要写成:
return
{
Name:’yzk’,
Age:18
}

原因是js会在语句末尾自动增加”分号”,如果将大括号另起一行,则return语句后自动增加“分号”后,返回值就变成了undefined了。

arguments对象
JavaScript中没有方法重载。
动态为方法传递参数,类似于.net中的params关键字作用
<script type="text/javascript">
        function myFunc() {
            for (var i = 0; i < arguments.length; i++) {
                document.write(arguments[i]);
                document.write('<br/>');
            }
        }
        myFunc('张三', 18, '李四', 19);
    </script>

匿名函数1(函数直接量function literal)
第一种:
var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量
alert(f1(1,3));
匿名函数没法调用,只能赋值给一个变量,由于是赋值语句,后面要加分号
应用:
///document.getElementById(‘btn’).onclick=function(){}

第二种(*):
(function(p1,p2){alert(p1+p2);})(20,30);

第三种:(*)
var m1=new Function(“p1”,”p2”,”p3”,”return p1+p2+p3”);
alert(m1(1,2,3));性能低eval
匿名函数知道即可,以后用到的时候就会发现它的好了。jQuery中大量用到了匿名函数。

匿名函数2
类似于C#中的匿名函数。
这种匿名函数的用法在jQuery中的非常多。
alert(function(i1, i2) { return i1 + i2; }(10,10));//直接声明一个匿名函数,立即使用。用匿名函数省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突。通过例子发现一旦命名冲突以最后声明的为准。尽量减少文件的字节数。
匿名函数的使用,在后续的学习中会有使用。

JS面向对象基础1(*)
1.函数就是对象,对象就是函数。【当函数作为对象时,每个单词首字母都大写】
方法直接调用为函数,用new调用为对象。

2.由于js是动态语言所以创建对象的最直接的方式:
var obj=new Object();
obj.name=‘aa’;
obj.age=18;//要什么加什么。但是都是object类型。无法区分不同类型。

3.Example(写一个Person对象):
function Person()  {   }   //ok,就这么简单。

4.如何使用Perosn对象?
var p=new Person();// “var p”  不是   “Person p”。
p.Name=‘张三’;//动态语言,所以可以直接写。
p.Age=30;
p.SayHello=function() { alert(‘Hi~’); }
alert(p.Name);
alert(p[‘Age’]);//另外一种动态访问属性的方式。

JS面向对象基础2(*)
JavaScript同样支持this关键字
构建一个带参数的Person对象。通过this关键字为对象的属性赋值。
function Person(name, age) {
            this.Name = name;
            this.Age = age;
            this.ShowInfo = function() {
            alert('大家好,我叫' + this.Name + ',今年' + this.Age + '岁了。');     }}
var zjl = new Person('周杰伦', 20);
zjl.ShowInfo();
function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。【var p1 = Person(“周杰伦", 20);//不要丢了new,否则就变成调用函数了,p1为undefined。】new 相当于创建了函数的一个实例。