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

函数声明

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 相当于创建了函数的一个实例。