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实例话的该对象的每一个实例。但不包括此对象本身
静态成员只适用于对象的一个特殊实例