1宵晚、面向?qū)ο笕筇卣鳎悍庋b垂攘、繼承、多態(tài)
? ? 封裝:將功能封裝整合在對(duì)象內(nèi)淤刃,只對(duì)外界暴露指定接口晒他,外界使用只需考慮接口的使用。
? ? 繼承:JS中的繼承是對(duì)象和對(duì)象之間的繼承逸贾,如果一個(gè)對(duì)象想擁有另外一個(gè)對(duì)象的成員陨仅,就可以讓這個(gè)對(duì)象繼承自另外一個(gè)對(duì)象。
? ? 多態(tài):JS沒有多態(tài)铝侵。
2掂名、繼承的實(shí)現(xiàn)方式
? ? ①混入式繼承?
? ? for in { 對(duì)象[key]=繼承對(duì)象[key] }
? ? ②替換原型方式實(shí)現(xiàn)繼承
? ? 構(gòu)造函數(shù).prototype=繼承對(duì)象
? ? 好處:能直接所有添加使用
? ? 弊端:會(huì)把之前原型內(nèi)的對(duì)象替換掉為要繼承的對(duì)象
? ? ③混合式繼承
? ? for in { 對(duì)象.prototype[key]=繼承對(duì)象[key] }:沒有替換原型,只是往原型中添加成員
3哟沫、原型鏈
? ? 每個(gè)對(duì)象都有原型,原型也是一個(gè)對(duì)象锌介,所以原型又有原型嗜诀,形成一個(gè)鏈?zhǔn)浇Y(jié)構(gòu)猾警,即原型鏈。
? ? 對(duì)象訪問屬性和方法的規(guī)則:如果自己里面有這個(gè)成員隆敢,就訪問自己的发皿;如果自己沒有,就去原型中查找拂蝎;如果原型中沒有找到穴墅,就沿著原型鏈接上往上查找,直到找到為止温自;如果到頭都沒找到玄货,就返回undefined或報(bào)錯(cuò)。
? ? 不管是哪個(gè)對(duì)象悼泌,最終的原型鏈盡頭都是 Object.prototype
? ? 意味著Object.prototype這個(gè)原型里面的成員松捉,不管是哪個(gè)對(duì)象都可以訪問
4、Object.prototype的成員介紹
? ? hasOwnProperty:判斷自己本身是否有這個(gè)屬性
? ? 對(duì)象.hasOwnProperty(屬性)
? ? 屬性 in 對(duì)象:判斷自己能不能訪問某個(gè)屬性
? ? isPrototypeOf:判斷一個(gè)對(duì)象是不是另一個(gè)對(duì)象的原型
? ? 對(duì)象1.isPrototypeOf(對(duì)象2)
? ? propertyIsEnmuerable:判斷屬性是否是屬于自己的
? ? ? ? ? ? ? ? ? ? ? ? ? 判斷屬性是否是可以遍歷的
? ? ? ? ? ? ? ? ? ? ? ? ? 只有兩個(gè)都成立馆里,結(jié)果才為true
? ? 對(duì)象.propertyIsEnmuerable(屬性)
? ? valueOf:原始值
? ? *不推薦直接給內(nèi)置構(gòu)造函數(shù)的原型擴(kuò)展方法或者屬性隘世。
6、函數(shù)是一個(gè)對(duì)象? (構(gòu)造函數(shù)也是一樣)
? ? 查看函數(shù)對(duì)象:console.dir()
? ? 這個(gè)函數(shù)是由哪個(gè)構(gòu)造函數(shù)創(chuàng)建出來的鸠踪?Function
7丙者、函數(shù)對(duì)象中常用的屬性
? ? 函數(shù)名.caller:一個(gè)函數(shù)在哪個(gè)函數(shù)體里面被調(diào)用,那么這個(gè)函數(shù)的caller就是那個(gè)函數(shù)营密。(如果這個(gè)函數(shù)是直接調(diào)用械媒,那么這個(gè)函數(shù)的caller就是null)
? ? 函數(shù)名.length:代表的是形參的個(gè)數(shù)
? ? 函數(shù)名.name:代表的是函數(shù)名
? ? 函數(shù)名.arguments:代表的是實(shí)參? (函數(shù)名.arguments 這個(gè)不常用)
? (函數(shù)名.arguments === arguments)//false
? ? arguments:偽數(shù)組,但也是一個(gè)對(duì)象(arguments.push()沒有這個(gè)方法)? ??
? ? 對(duì)象里的屬性:arguments.callee? 函數(shù)本身
8卵贱、instanceof:判斷構(gòu)造函數(shù)的prototype屬性在不在某個(gè)對(duì)象它的原型鏈上
? ? 語法:對(duì)象 instanceof 構(gòu)造函數(shù)