js知识点小结(2)

 javascript是一种基于原型的面向对象的语言,没有类的概念,主要是function定义的。

js中的继承:     student.getName=person.getName

创建构造方法(Function):

 function myConstructor(a){ ....... }  

等价于:

var myConsturctor=new Function('a',...);

但是最好的写法是第一种。

 

创建静态方法:

var myObject=new Object();
myObject.name='jh';
myObject.alertName=function(){alert(this.name);}
myObject.alertName();

这段代码通过点运算符直接在Object对象上将name属性和alertName()方法作为静态成员添加到了对象实例中,只存在于对象的一个具体实例,而不存在于构造函数中

var myConstuctor=function(){}
myConstuctor.name='jh';
myConstuctor.alertName=function(){alert(this.name);}
myConstuctor.alertName();

这段代码中myConstuctor既是一个实例也是一个构造函数,但是name和alertName成员不能应用到任何新的实例中。

 

添加公有方法:

能够使实例化的对象包含的方法称为公有方法。需要修改函数原型,即prototype属性。当修改一个对象的原型时,任何继承该对象的对象也会改变。如:

function myConstructor(message){
	this.myMessage=message;
}
//添加公有方法:
myConstructor.prototype.clearMessage=function(string){
	this.myMessage+=' '+string;
}

 

添加私有和特权成员:

function 里面的属性或者方法都是私有的。特权方法是能够被公开访问,而且还能访问私有成员。特权方法是指在构造函数的作用域中使用this关键字定义的方法:

function myConstructor(message){
	this.myMessage=message;
	var separator='_';
	var myOwner=this;
	.......
	//特权方法
	this.appendToMessage=function(string){
               this.myMessage+=separator+string;
	   alertMessage();
             }
}


 

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

公有成员存在于通过new关键字实例化该对象的每一个实例。

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

 

用对象字面量的来定义方法:

function myConstructor(){};
//公有成员
myConstrutor.prototype={
	propertyA:'value',
	propertyB:'value',
	methodA:function(){},
	methodB:function(){}
}

(最后一个方法后不要加逗号,否则会报错。)

例如:

myLogger.prototype={
	write:function(){},
	header:function(){}
}

这就是想myLogger中添加了两个特权方法,write和header



 

 


 

你可能感兴趣的:(JavaScript,function,String,object,header,prototype)