js中,一切事物都是对象。对象是一切的基础。
而具体到某一个对象时。
对象则是包含一组变量和函数的集合实例
我们先来中体会下je对象的全局。
接下来就具体揭开这个对象的面纱吧
ja对象分类
- Function对象
Function实例
构造函数function
- Object对象
创建静态对象
两者区别
Function·对象,具有调用功能
(可当做构造函数,添加参数),
1通过new关键字实例化,构造函数function,必须通过
function实例,如alert()
2 Object对象,具有固定功能,不能调用()
对象继承
js中对象是基于原型的(prototype)。原型只存在与function中,所以一个原型就是一个对象,也是一个属性包
对象具有的属性:
Caller:表示调用正在执行的函数
prototype:可以用来为对象添加新的属性和方法
arguments:表示函数参数的数组
创建对象
所有的内置对象都是可以通过New关键字或简单语法来创建对象的.如:
Var Obj=New Object() ; 或等于 var Obj={}; Var arry=new Array[];或 Var arry=[ ];
构造函数
每个对象都是以构造函数为起点的。function是构造函数的起点,创建构造函数与上述创建对象Function类似
如: Var myfunction=new function('a', '/*代码*/'); function myfunction('a', '/*代码*/');
两种都可以,建议第二种方式优先。
添加静态方法:
静态方法充实只存在于对象的某一个具体的实例中,而不存在于构造函数中。更直观的是对存在于Object对象中。
实例代码:
Var myObject=new Object(); //添加属性name属性 myObject.name='h'; //添加一个方法 myObject.alertName=function(){ Alert(this.name); } //执行添加的方法 myObject.alertName();
添加公有成员
能够跟随对象实例化的成员称之为公有成员,添加公有成员需要修改函数的原型,即对象的prototype属性。
特点:
公有方法可以随构造函数而被继承下去。使用点操作符号添加方法。
实例代码: Function my(message) { Alert(message); This.message=message; } //添加共有方法 My.prototype.name=function(string){ This.message+=' '+string; } //添加共有属性 My.prototype.id='id'; //实例化 Varmyfunction=New my(); //调用共有方法 Myfunction.name();
注意:你不能直接在my()函数中调用name方法,必须是在实例中调用该方法;
私有成员
是在构造函数中定义的变量和函数
如
function my(){ //私有属性 Var myOwner='id'; my.alertName=function(){ Alert(this.name); }
特权成员
是能够被公开访问的,而且还能访问私有成员。该方法是在构造函数的作用域中使用this关键字定义的方法:
Function myname(message) { This.mymessage=message; Var myOwner=this; Var lastname='id'; //特权方法 This.appendTomessage=function(string){ This.mymessage+=lastname+string; Alert(mymessage); } }
对象字面量:
是一种语法规则,是创建一个带有共有方法的构造函数的语法;
使用的是点标识符创建对象和成员。
实例代码
如我们刚才创建的私有成员,一般方法创建为
function my(){ //私有属性 Var myOwner='id'; my.alertName=function(){ Alert(this.name); }
对象字面量方法:
Function my{ myOwner:'id', alertName:function(){ Alert(this.name) } }
注意: 最后是没有逗号的。
小结:
以上是对象的基本描述
在jis中对象分为
function类型(用与创建构造函数,共有成员,私有成员,以及特权成员)
Object类型,用于创建静态成员
共同点
:都可以创建对象字面量
不同点:
Object具有固定功能,不能想function那样调用()
Function可当做构造函数,添加参数,进行调用。
到这里js对象的基础就已经告一段落了,欢迎大家指点