Js简介3——各种方法的解析

 

1.       构造方法的创建

function myConstructor(a){

//某些代码

}

function对象的特别之处在于,它的实例也能作为构造方法,因此可以用来创建函数的实例。如var myObject=new myConstuctor();

 

注意:function myConstructor(message){

 Alert(message);

 this.myMessage=message;

}

Var myObj=new myConstructor(“Instantiating”);

(其中myMessage属性只在被实例化的myConstructor的实例中可用,而在myConstructor函数自身中是无效的)

      

2.       静态方法

var myObject=new Object();

//添加个属性

myObject.name=”jh”;

//添加个方法

myObject.alertName=function(){

 alert(this.name);

}

//执行添加的方法

myObject.alertName();

上述代码也可以写成:

Var myConstructor=function(){}

myConstructor.name=’jg’;

myConstructor.alertName=function(){

  alert(this.name);

}

myConstructor.alertName();

说明:静态属性与方法只存在于此处定义的一个具体的实例中。这里即是myConstructor。Name和alertName成员不能应用于新的实例中

3.       公有成员(能够使实例化的对象包含的方法叫公有方法)

添加公有方法实例:

Function myConstructor(message){

   Alert(message);

this .myMessage=message;

}

//添加公有方法

myConstructor.prototype.clearMessage=function(string){

   this.myMessage+=’ ‘+string;

}

说明:这样操作后将会把新方法添加到myConstructor的底层定义中,而不是添加到myConstructor实例自身。

Var myObject=new myConstructor(‘hello world’);

myObject.clearMessage();

但是不能直接在myConstructor(即定义公有方法的类上直接调用公有方法)上调用公有方法。

4.       私有成员:(就是在构造函数中定义的变量和函数)

举例:function myConstructor(message){

   this .myMessage=message;

var myOwner=this;//私有属性

var separator=’_’; //私有属性

function alertMessage(){

//私有方法

alert(myOwner.message);

}

alertMessage(); //实例话时显示信息

}

5.       特权成员(能够被公开访问,而且还能访问私有成员。特权方法指在构造函数的作用域中使用this定义的方法)

  例:function myConstructor(message){

  this .myMessage=message;

  var separator=’_’;

  var myOwner=this;

  //特权方法

  this .appendToMessage=function(string){

  this .myMessage+=separator+string;

  alertMessage();

}

}

(注意特权方法appendToMessage方法可以访问myConstructor的私有成员separator)

使用

 var myObj=new myConstructor(‘hello world’);

myObj.appendToMessage(‘aaa’);

 

各种方法总结:

私有和特权成员在函数的内部,他们会被带到函数的每个实例中,因而将占用大量的内存。

公有的原型成员是对象蓝图的一部分,适用于通过new实例话的该对象的每一个实例。但不包括此对象本身

静态成员只适用于对象的一个特殊实例

posted @ 2011-06-13 19:18  转航  阅读(120)  评论(0编辑  收藏  举报