標籤:執行個體 注意 title ber func ons string 方法 function
JavaScript不區分類和執行個體的概念,而是通過原型(prototype)來實現物件導向編程.
原型是指當我們想要建立xiaoming
這個具體的學生時,我們並沒有一個Student
類型可用
var Student = { name: ‘Robot‘, height: 1.2, run: function () { console.log(this.name + ‘ is running...‘); }};var xiaoming = { name: ‘小明‘};xiaoming.__proto__ = Student;
注意最後一行代碼把xiaoming
的原型指向了對象Student
,看上去xiaoming
彷彿是從Student
繼承下來的:
xiaoming.name; // ‘小明‘xiaoming.run(); // 小明 is running...
所謂繼承關係不過是把一個對象的原型指向另一個對象而已。
上述代碼僅用於示範目的。在編寫JavaScript代碼時,不要直接用obj.__proto__
去改變一個對象的原型,並且,低版本的IE也無法使用__proto__
。Object.create()
方法可以傳入一個原型對象,並建立一個基於該原型的新對象,但是新對象什麼屬性都沒有,因此,我們可以編寫一個函數來建立xiaoming
:
// 原型對象:var Student = { name: ‘Robot‘, height: 1.2, run: function () { console.log(this.name + ‘ is running...‘); }};function createStudent(name) { // 基於Student原型建立一個新對象: var s = Object.create(Student); // 初始化新對象: s.name = name; return s;}var xiaoming = createStudent(‘小明‘);xiaoming.run(); // 小明 is running...xiaoming.__proto__ === Student; // true
js的物件導向