1.Object类概念
Object类是所有javascript类的基类,提供了一种创建自定义对象的简单方式,不需要程序员再定义构造函数。
主要属性:
constructor-对象的构造函数;
prototype-获得类的prototype对象,static性质;
var i=new Number(10);
//我们可以给类添加方法
Number.prototype.add=function(a){
return this+a;
}
window.alert(i.add(10).add(30));//输出50
var b=90;
window.alert(b.add(40)); //输出130
主要方法:
hasOwnProperty(property)-是否属于本类定义的属性;
isPrototypeOf(object)-是否是指定类的prototype;
propertyIsEnumerable(property)-是否可列举的属性;
toString()-返回对象对应的字符串;
valueOf()-返回对象对应的原始类型值;
2.如何给类添加方法(如何给某类型的所有对象添加方法)
思考:给js的Array对象扩展一个find(val)方法?
var arr1=new Array(3);
arr1[0]="George"
arr1[1]="John"
arr1[2]="Thomas"
//遍历该数组
for(var i=0;i<arr1.length;i++){
document.writeln(arr1[i]+" ");
}
//使用Array提供的方法,颠倒数据
arr1.reverse();
document.write("<br/>");
//遍历该数组
for(var i=0;i<arr1.length;i++){
document.writeln(arr1[i]+" ");
}
//现在试给Array添加一个方法find(val)
Array.prototype.find=function(val){
//遍历数组this
for(var i=0;i<this.length;i++){
if(val==this[i]){
return i;
}
}
return -1;
}
document.writeln("John下标="+arr1.find("John"));
3.成员函数的细节
(1)成员函数的参数可以是多个
function 函数名(参数列表){
代码语句
}
(2)成员函数可以有返回值,也可以没有,但是有的话最多只有一个。
(3)js中不支持函数的重载
function test(a){
window.alert(a);
}
function test(a,b){
window.alert(a+" "+b);
}
test(23); //只调用最后一个函数,前面都覆盖掉了
window.test(3,'hello');
结论1:js在调用函数的时候,是根据函数名来调用。如果有多个函数名相同,则认最后那个函数。
结论2:直接定义一个函数或者变量实际上这些函数和变量就是全局函数和全局变量(本质上他们是属于window对象的)。