對象是一個總體,對外提供一些操做編程
使用對象時,只關注對象提供的功能,不關注其內部細節;好比jQuery函數
arr=[1,2,3,4,5] //arr是一個對象 arr.length;//屬性 arr.push(6);//方法
//變量跟屬性本是同一個東西
//var a=12;//變量:自由
//arr.a = 5;//屬性:屬於一個對象
//函數 function show(){ } //方法:屬於一個對象的 arr.fn=function(){ }
//針對array var arr=[12,23,45]; arr.show=function(){ //this:是當前的方法,屬於誰 alert(this)//arr } //針對object var obj = new Object(); obj.aaa=12; obj.show=function(){ alert(this.aaa)//12 } obj.show();
//其實這個函數就是建立一個對象(用工廠方式構造對象) //用工廠方式構造對象 //好聽點就是:構造函數 function create(name,sex){ var obj = new Object(); //屬性 obj.name=name; obj.sex=sex; //方法 obj.showName=function(){ alert(this.name)//111 } obj.showSex=function(){ alert(this.sex)//男 } return obj; } var p1=create("111","男'); p1.showName(); p1.showSex();
//this:當前方法,屬於誰; //可是函數前面有new的話,this就會失效; function create(name,sex){ //屬性 //var this = newObject();//假想系統幫咱們處理了建立對象 this.name=name; this.sex=sex; //方法 this.showName=function(){ alert(this.name)//111 } this.showSex=function(){ alert(this.sex)//男 } //return this;//假想系統幫咱們處理了return } var p1=new create("111","男'); p1.showName(); p1.showSex(); //記住一句話裏面有new,外面就不須要new;外面有new,裏面就不須要new;
//首先區別一下類,對象(實例) var arr = new Array(); Array.prototype.sum=function(){ //在Arry這個類上均可以使用sum() } //arr對象:真正有功能的東西,是被類構造出來的 //Array類:不具有實際的功能,只能用來構造對象 //因此我理解的就是構造函數就是類,類就是構造函數---只針對js function Create(name,sex){ //屬性 this.name=name; this.sex=sex; } //Create就是類,也是構造函數 Create.prototype.showName=function(){ alert(this.name)//111 } Create.prototype.showSex=function(){ alert(this.sex)//男 } //記住一句話相同的加在原型裏,不一樣加在構造函數裏 var p1=new create("111","男'); p1.showName(); p1.showSex(); //混合模式