ES5-11原型与原型链深入、对象继承
生活随笔
收集整理的這篇文章主要介紹了
ES5-11原型与原型链深入、对象继承
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原型
- 誰調(diào)用,this就指向誰,當實例對象有該屬性時,不會去原型上查找
- 創(chuàng)建對象的兩種方法:字面量、new Object()一般不用后面的
- 二者創(chuàng)建出來的對象沒有差異
Object.create()
- var 實例 = Object.create(對象/null)
- 將對象或null作為實例的原型
- new構造函數(shù)的時候做了什么
- 實例化對象
- 調(diào)用構造函數(shù)的初始化屬性和方法
- 指定實例對象的原型
- 將null作為實例的原型,原型中將不包含任何屬性!
- 因此,不是所有對象都繼承Object.prototype
- 無法查找到toString方法(沒有__proto__)
- 手動增加的__proto__和自身的不一樣,沒有可以向上查找的原型鏈
-
document.write接收字符串,當傳入非String類型時,會先調(diào)用相應的toString方法
-
原始值是沒有屬性的,基本包裝類有屬性和方法(有toString)
-
除了undefined、null,其他的基本數(shù)據(jù)類型(Number、String、Boolean)都有自己的toSting方法
-
基本數(shù)據(jù)類型的toSting方法和Object.prototype的toSting方法不同
原型鏈
- 原型鏈的終點是Object.prototype
對象繼承
- 將父級的實例作為我的原型對象
- 祖先的實例中的__proto__指向祖先的原型對象,構造器指向構造函數(shù)GrandFather
- 祖先原型對象里也有__proto__指向Object.prototype,構造器指Object構造函數(shù)
- Object.prototype有toString方法
- 孩子實例修改父親的引用數(shù)據(jù)類型的屬性
- 孩子實例不能修改父親的基本數(shù)據(jù)類型的屬性
- 對于++操作符 相當于student.students = 1 + student.students(先讀取再賦值),會在孩子實例上創(chuàng)建這個屬性
調(diào)用方法時改變函數(shù)內(nèi)this指向
call\apply\bind
方法.call(this指向的對象,參數(shù)…)
方法.apply(this指向的對象,arguments)
- 插件計算器 方法寫在prototype里更合適
總結
以上是生活随笔為你收集整理的ES5-11原型与原型链深入、对象继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能优化杂记
- 下一篇: makefile(详细讲解)