定義乙個類user
,注意類的定義中,成員之間無需逗號分隔,這點與原型不同。constructor
物件指向其建構函式,this
指向其實例物件本身。
class
user
}//無需逗號
getname()
}
使用new
關鍵字建立乙個例項物件,constructor
會在new
時自動執行
let lisi =
newuser
("lisi"
);
類的本質是乙個函式物件,所以可以跟構造方法一樣使用new關鍵字呼叫其constructor
建立例項物件
console.
log(user.__proto__)
// function()
所以下面的兩段**的實現效果是一樣的
class
user
getname()
}
function
user
(name)
user.prototype.
getname
=function()
類的屬性定義有如下兩種方法,可以定義在建構函式中也可以直接定義在類中,定義在類中的屬性無需使用this
和function
定義,直接使用方法簽名+()
的形式,定義在
class
user
} name =
"張三"
;func3()
}
class 中定義的方法直接定義在其原型中且不能列舉
class
user
func()
}user.prototype.
func()
;// func
let pd = object.
getownpropertydescriptor
(user.prototype,
"func");
console.
log(pd.enumerable)
;// false
靜態屬性即為類設定屬性,而不是為生成的物件設定,在js中使用static
關鍵字設定
class
user
;static name =
"user's name";}
let john =
newuser()
;console.
log(john.name)
;//undefined
console.
log(user.name)
;//user's name
與靜態屬性類似,指通過類訪問而不能通過例項物件訪問的方法
class
user
;static name =
"user's name"
;static
show()
}let john =
newuser()
;user.
show()
;// user's name
john.
show()
;// 報錯!! 方法不存在
使用訪問器可以對物件的屬性進行訪問控制
class
user
}set
age(value)
getage()
}let peter =
newuser
("peter",20
);peter.age =-20
;// 報錯 : 年齡不合法
使用extends
關鍵字進行 繼承,super
指向上一基類構造,在定義constructor
時必須優先呼叫父類構造,即super()
class
preson
show()
$`);
}}class
user
extends
preson
usershow()
$$`)
;}}let user =
newuser
("張三",20
,"男");
user.
show()
;//張三 20
user.
usershow()
;//張三 20 男
C 類class 學習筆記
三看原則 1.看呼叫的成員變數是在類的內部還是類的外部 2.看兒子繼承方式 3.當前變數在兒子中的變數在父親中的訪問控制許可權 類的相容性原則 子類物件可以當做父類物件使用 子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 為...
Swift學習筆記九 類 Class
person 類沒有 初始化器 s,建構函式可以有多個,預設是 initclass person nsobject 過載 函式名相同,會是引數和個數不同 過載可以給自己的屬性從外部設定初始值 init name string class person nsobject 重寫父類的方法 overrid...
scala學習筆記09 樣例類
樣例類 樣例類使用了case關鍵字的類定義就是就是樣例類 case classes 樣例類是種特殊的類,經過優化以用於模式匹配。object case class01 定義函式分辨職務 def classify p person unit 定義父類 person class person 定義doc...