建立乙個飛機的物件
該物件具有以下屬性和方法
plane.prototype.
fly=
function()
function
plane()
//建立乙個飛機的物件
var plane =
newplane
("夢想號"
);
此時,因為軍事實力的提公升,我們的需求發生改變,需要生產具有攻擊能力的戰鬥機
所以,我們在建立乙個攻擊機的構造工廠
因為後來生產的飛機是在已有工廠的前提下生產的,所以採用繼承的方式來創造戰鬥機
此時飛機具有的功能有
function
attackplane()
繼承原型上的方法有很多種,如下(此處使用父類和子類代替飛機的關係)
直接將父類的原型賦值給子類的原型
attackplane.prototype = plane.prototype;
attackplane.prototype.
attack
=function()
function
attackplane()
var plane1 =
newplane()
;
控制台看效果
所以採用此種方法繼承會導致父類多出不需要的方法
2.將父類的物件new乙個例項賦予子類的原型
採用new plane的方式會導致子類的原型上會將父類的私有屬性繼承下來,所以也不合適
使用中間變數的方式
此種方式也沒有避免子類的方法順著原型鏈傳到父類的身上
4.採用
//這種方法寫起來比較複雜,沒有相容性問題
attackplan.prototype = object.
create
(plan.prototype,
)//老版本瀏覽器會有相容性問題,有時需要左相容性處理,採用最多
attackplan.prototype = object.
setprototypeof
(attackplan.prototype, plan.prototype)
;//最粗暴的方法,大佬的做法
attackplan.prototype.__proto__ = plan.prototype;
attackplane.prototype.
attack
=function()
attackplane.prototype.
attack
=function()
function
attackplane()
var plane1 =
newplane()
;
這三種情況下,都能避免子類的的方法汙染父類的方法
也不會使父類的私有變數跑到子類的原型上去
ES6部分語法
1 當物件的key和value名稱一致時,可以縮寫成乙個。components 等同於 components 2 data 等同於data function data 等同於 data function 3 是箭頭函式 render function h 也等同於 render h 4 在es6語法...
ES6部分特性小結
es6之前宣告變數只能用var,var的特點是無論宣告在何處,都會被視為宣告在函式的最頂部 不在函式內即在全域性作用域的最頂部 function test else console.log name 此處訪問值為undefined 可以看到雖然列印結果是undefined,但是並沒有報錯。那是因為被...
ES6部分新特性總結
1.不存在變數提公升 使用var宣告 console.log a undefined var a 1 使用let宣告 console.log b let b 2 報錯 2.只在當前作用域有效 for var i 0 i 4 i i 4 for let n 0 n 4 n n 報錯 3.暫時性死區 如...