Javascript類和構造函數的理解

1.類的理解
聲明或者執行后返回類似Json格式的對象,對於function申明的返回的對象不是類似json格式的對象,將返回this
特點是這個函數有自己的屬性和方法
申明類的時候相當于把一個方法執行了一遍
var Demo1=function(){
alert("a");
}
var Class1=new Demo1();//毫無意義,沒有屬性也沒有方法,Class1沒有任何用
//new Demo1();就是將函數Demo1執行一遍返回的結果對象 返回有類似Json格式的對象,Class1就是返回結果,沒有Json格式的對象返回就是This對象

var Demo2=function(){
alert("a");
}
var Class21=new Demo1();
Demo2.prototype.show=function(){alert("c");}//這個時候Class21也多了一方法
var Class22=new Demo2();//那麼這個類有一個方法

function Demo3(){
this.name="a";
}
var Class3=new Demo3();//這個Class3就有一個屬性,可以理解為類

//免關鍵字new的方式

var Class4=(function(){
return{
name:"a"
};
})();

function Demo4(){
this.name="a";
return "c";
}
var Class5=new Demo4();//Demo4的this對象 具有name屬性

function Demo5(){
this.name="a";
return {age:25};
}
var Class6=new Demo5();//Class6為匿名對象 具有age屬性,無Name屬性


//本省就是類似Json的對象 DemoJson本身就可以理解為一個類
var DemoJson={
show:function(){},
name:"demo",
}
//DemoJson格式就是一個Json格式

var Class7=new DemoJson();//聲明異常 報錯

//Class3本身就是申明的類了
var Class8=new Class3();//Class3為前面申明的類,此時聲明異常 報錯

2.類構造函數的理解
說白了就是函數中的函數,並且在聲明是執行函數中的函數
其實函數本身就是自己的構造函數,根本無需在重新申明構造函數,若構造函數要處理的事情比較多或者比較複雜還是單獨申明

//自定義構造函數
var DemoContruct1=function(name){
this.name="";
function contruct(name){
this.name=name;
console.log(this.name);
}//先聲明函數
contruct(name);//然後執行函數
}
var Class5=new DemoContruct1("class5");//聲明的時候console.log(this.name);已經執行


//本身作為構造函數
var DemoContruct2=function(name){
this.name=name;
console.log(this.name);
}
var Class6=new DemoContruct2("class6");//聲明的時候console.log(this.name);已經執行

//匿名構造函數
var DemoContruct3=function(name){
this.name="";
(function(name){
this.name=name;
console.log(this.name);
})(name);
}
var Class7=new DemoContruct2("class7");//聲明的時候console.log(this.name);已經執行

猜你喜欢

转载自blog.csdn.net/losedguest/article/details/81979308