1、JavaScript對象的建立html
(1)對象方法數組
function Student(name){ this.name=name; this.showName=function(){ alert("my name is "+this.name); }; }
調用showName方法:app
new Student('a').showName();
對象方法的調用,類要生成一個實例,該實例能夠調用該方法;函數
(2)類方法this
Student.showAge=function(){ alert('age is 20'); }
調用方式:spa
Student.showAge();
類方法至關於C#的靜態方法,不須要new一個對象實例,能夠直接調用;.net
(3)繼承方法prototype
Student.prototype.sayHello=function Hello(){ alert('hello'); }
調用方法:code
new Student('a').sayHello();
原型方法通常用與繼承父類的方法和方法共享;htm
(4)對象的字面量方式建立
var p2={ age:21, name:'jack', sayAge:function(){ alert(this.age); } }
調用方法
p2.sayAge();
2、prototype的用法
(1)建立一個基類對象
function baseClass(){ this.name='jack'; this.showMsg=function(){ alert('base'); }; }
(2)建立一個新的對象
function extendClass(){ this.age=20; }
(3)新對象引用原型對象
extendClass.prototype=new baseClass();
(4)查看新對象
在此,咱們能夠看到extendClass繼承了baseClass的屬性和方法,在extendClass對象中能夠調用baseClass的對象和方法;
3、調用原型對象中的方法;
若是當原型對象和本對象均有同名的方法和屬性時,調用時會先調用本對象的方法和屬性;
(1)原型對象
function baseClass(){ this.name='jack'; this.showMsg=function(){ alert('base'); }; }
(2)新對象
function extendClass(){ this.age=20; this.name='rose'; this.showMsg=function(){ alert('extend'); } }
(3)新對象繼承原型對象
extendClass.prototype=new baseClass();
(4)調用對象的方法
經過結果咱們能夠看到,當新對象和原型對象都有同一個屬性和方法時,會調用本對象的方法和屬性,那麼咱們該如何調用原型對象的方法和屬性呢
4.1 使用__proto__來調用
4.2 使用call來調用
new baseClass().showMsg.call(new extendClass())
將extendClass對象當作bassClass對象,來調用baseClass的對象方法
(5)call和apply的使用和區別
5.1 call和apply主要是用來改變函數運行時的上下文,他倆功能一致;但在參數傳遞時:call傳遞參數個數任意,apply傳遞參數是數組形式;
5.2 call和apply的運用
基礎方法
function Dog(name){ this.name='dog'; this.showName=function(){ alert("name1:"+this.name); } }
新的對象
function Fish(){ this.name='fish'; }
當Fish對象想要調用showName方法時,可用使用apply,或者call
var dog=new Dog(); var fish=new Fish(); dog.showName.call(fish) dog.showName.apply(fish,[])
4、小結
5、參考連接
一、http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html
二、http://bbs.csdn.net/topics/390775296