您的位置:首页 > Web前端 > JavaScript

js的类、对象与函数,个人总结

2010-12-03 15:35 288 查看
关于函数

在同一个js文件中,如果有两个相同的函数,则下面的函数起作用

函数参数:对同一个函数,即使不显示的声明其参数,在使用该函数时既可以使用带参数的函数形式,也可以使用不带参数的函数形式

通过使用arguments[0]就可以访问函数的第一个参数,其他依次类推

用arguments对象判断传递给函数的参数个数,即可模拟函数重载

函数名.length可以用来获取该函数的参数个数

函数定义方式:

3.1. 正常的定义

function functionName([arguments]){

Javascript statements

[return expression]

}

3.2. 匿名函数

var func2 = function(…){…};

3.3. 匿名函数加默认参数

var iii = (function(a,b){return a+b;})(1,2);// 后面的括号(1,2)表示创建完后立即进行这个函数调用

关于类

JavaScript中的对象系统是基于原型的,这也意味着它与普通的面向对象语言,比如Java和C++不一样。基于原型意味着,建立新类的时候,是新
建一个包含指定的属性和方法的构造函数,而并不是不是新建立一个类类型。this关键字用于指代那个类生成的实例。可以这样理解this对象,它本质上就
是一个包含成员入口的属性列表。

类的定义方式:

通过构造函数来模拟类

var Person=function(name){//这是一个构造函数

this.name=name;//成员变量,使用this标明是共有变量,如果是var name就是私有变量

}

因为函数有多种写法,所以上面还可以写成:function Person(name)

Person.prototype.say=function(){//成员函数的定义

alert('hi,我是'+this.name);

}

var wanz=new Person('丸子');//实例化对象

wanz.say();//类的实例访问成员函数,输出:hi,我是丸子

var rekey=new Person('rekey,丸子的师傅');//另一个实例

rekey.say();//hi,我是rekey,丸子的师傅

类的静态属性和方法

var Person=function(name){

this.name=name;

}

Person.prototype.say=function(){

alert('hi,我是'+this.name);

}

Person.color='yellow';//静态属性的添加如此简单

alert(Person.color);

var wanz=new Person('丸子');

wanz.say();

alert(wanz.color);//undefined,静态属性color并不会被实例继承


类中静态属性和方法的定义
http://blog.csdn.net/sevenzhang/archive/2007/03/16/1531518.aspx



目前被认可的有两种方法:(同样用上例作说明)

1.采用上述A.value定义静态属性,采用A.func定义静态方法

2.采用上述A.prototype.value定义静态属性,采用A.prototype.func定义静态方法

在一些文献中,

称A.value定义的属性为static class variables

称A.func定义的方法为static class functions

称A.prototype.value定义的属性为shared member variables

称A.prototype.value定义的方法为shared member functions

采用方法1和2在一般情况下是一样的,但是还是有一定的差别,举例说明如下:

(1).类A的实例x并没有属性value2和方法func2,也就是说x.value2和x.func2都不存在,只存在A.value2和A.func2

(2). x.value3改变的时候 A.prototype.value3不改变,但是 A.prototype.value3改变的时候 x.value3将随之改变

Note:this与prototype定义的命名冲突的情况

事实上,编译器尝试先搜索this定义的属性或者方法,当找不到的时候才在prototype中进行寻找。

关于对象:http://www.ccvita.com/94.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: