標籤:
1、javascript是一種基於對象(object-based)的語言,你遇到的所有東西幾乎都是對象。
2、因為JavaScript中沒有class,所以有人把類也成為原型對象。
function Cat(){
}
Cat();//函數
var cat1=new Cat(); //類
js中的對象的屬性可以動態添加;屬性沒有限制。
類(原型對象)--如何自訂類(原型對象)和對象:
1、Factory 方法--使用new Object建立對象並添加屬性;
2、使用建構函式來定義類(原型對象)
3、使用prototype
4、建構函式及原型混合方式
5、動態原型方式
基本文法
function 類名/原型對象(){
}
function Person(){}
var a=new Person();
window.alert(a.constructor); //a對象執行個體的建構函式
window.alert(typeof a); //a的類型是什麼
var b=”1234”;
window.alert(b.constructor); //b對象執行個體的建構函式
window.alert(typeof b); //b的類型是什麼
如何判斷一個對象執行個體是不是Person類型?
if(a instanceof Person){
window.alert(“a是person”);
}
if(a.constructor==Person){
window.alert(‘a是person’);
}
對象----function特別說明:
1、在js中一切都是對象
2、類(原型對象)其實也是對象,它實際上是Function類的一個執行個體,通過類我們可以建立自己的對象執行個體。
對象執行個體---如何訪問(使用)對象執行個體的成員變數
(1)、對象執行個體名.屬性名稱
(2)、對象執行個體名.[“屬性名稱”];
var a=90; //全域變數
function test(){
a=900; //在函數裡,如果不帶var,則表示使用全域變數的a變數
//如果帶上var則表示在test()中,定義了一個新的a變數
}
test();
window.alert(a);
js中this的用法:哪個對象執行個體調用this所在的函數,那麼this就代表哪個對象的執行個體。
〉〉this不能在類定義的外部使用,只能在類定義的方法中使用。如果放在外部使用,調用者就不再是類的執行個體了。
function Person(){
var name=”abc”; //var修飾的name是私人的,只能內部使用
var age=90;
this.name2=”abc2”; //this.name2表示name2這個屬性是公開的
this.show=function(){ //這個就是Person類的一個公開方法(特權方法)
window.alert(name+” ”+age);
}
function show2(){ //這是Person類的一個私人方法
}
}
var p=new Person();
window.alert(p1.name=” ”+p1.age+” ”+p1.name2); //錯誤
//p1.name->undefined p1.age->undefined p1.name2->abc2
給對象添加方法還有兩種方式:
第一種:
function 類名{
this.屬性;
}
var 對象名=new 類名(); //建立對象
function 函數名(){
//執行
}
對象名.屬性名稱=函數名; //這樣相當於把函數賦給對象名.屬性名稱,
//此時這個屬性名稱就表示一個函數
對象名.屬性名稱;
第二種:
對象名.屬性名稱=function(參數列表){
}
調用:對象名.屬性名稱(實際參數);
js物件導向編程