1 Javascript 面向對象編程javascript
所謂"構造函數",其實就是一個普通函數,可是內部使用了this變量。對構造函數使用new運算符,就能生成實例,而且this變量會綁定在實例對象上。html
自動含有一個constructor屬性,指向它們的構造函數。java
Javascript還提供了一個instanceof運算符,驗證原型對象與實例對象之間的關係。web
Javascript規定,每個構造函數都有一個prototype屬性,指向另外一個對象。這個對象的全部屬性和方法,都會被構造函數的實例繼承。編程
這意味着,咱們能夠把那些不變的屬性和方法,直接定義在prototype對象上。app
每一個實例對象都有一個hasOwnProperty()方法,用來判斷某一個屬性究竟是本地屬性,仍是繼承自prototype對象的屬性。函數
in運算符能夠用來判斷,某個實例是否含有某個屬性,無論是否是本地屬性。post
阮一峯的文章老是最通俗易懂的~this
2 Javascript的this用法url
它表明函數運行時,自動生成的一個內部對象,只能在函數內部使用
this指的是,調用函數的那個對象。
狀況一 純粹的函數調用
這是函數的最一般用法,屬於全局性調用,所以this就表明全局對象Global。
狀況二 做爲對象方法調用
函數還能夠做爲某個對象的方法調用,這時this就指這個上級對象。
狀況三 做爲構造函數調用
所謂構造函數,就是經過這個函數生成一個新對象(object)。這時,this就指這個新對象。
狀況四 apply調用
apply()是函數對象的一個方法,它的做用是改變函數的調用對象,它的第一個參數就表示改變後的調用這個函數的對象。所以,this指的就是這第一個參數。