原型prototype 我們所創建的每一個函數,解析器都會向函數中添加一個屬性prototype 這個屬性對應著一個對象,這個對象就是我們所謂的原型對象 如果函數作為普通函數,調用prototype沒有任何作用 當函數作為普通函數調用時,它所創建的對象中都會有一個隱含的屬性, 指向該構造函數的原型對 ...
原型prototype
我們所創建的每一個函數,解析器都會向函數中添加一個屬性prototype
這個屬性對應著一個對象,這個對象就是我們所謂的原型對象
如果函數作為普通函數,調用prototype沒有任何作用
當函數作為普通函數調用時,它所創建的對象中都會有一個隱含的屬性,
指向該構造函數的原型對象,我們可以通過_ _proto_ _來訪問該屬性
原型對象就相當於一個公共的區域,所有同一個類的實例都可以訪問到這個原型對象,我們可以將對象中共有的內容,統一設置到原型對象中。
當我們訪問對象的一個屬性或方法時,它會先在對象自身中尋找,如果有則直接使用,如果沒有則會去原型對象中尋找,如果找到則直接使用。
使用in檢查對象中是否含有某個屬性時,如果對象中沒有但是原型中有,會返回true
可以使用對象的hasOwnProperty()來檢查對象自身中是否含有該屬性
使用該方法只有當對象自身中含有屬性時,才會返回true
原型對象也是對象,所以它也有原型,
當我們使用一個對象的屬性或方法時,會先在自身中尋找,
自身中如果有,則直接使用,
如果沒有則去原型對象中尋找,如果原型對象中有則使用,
如果沒有則去原型的原型中尋找,直到找到object對象的原型
object對象的原型沒有原型,如果在object中依然沒有找到,則返回undefined。