2017-08-18 188 views
0

考慮:JavaScript的類的實例方法存儲在哪裏?

var car = class Car{ 
    drive() {} 
    park(){} 
} 

鑑於車,我怎麼能找到什麼方法這個類, 即「驅動」和「樂園」? 我還以爲他們是在

car.prototype

這是真的,

car.prototype.drive 

返回方法 和

car.prototype.hasOwnProperty("drive") => true 

for(let prop_name in car.prototype){ 
    console.log(prop_name) 
} 

什麼都不打印。

+0

'爲in'是怪異。 –

+0

不確定是什麼問題? – guest271314

+0

您回答了您自己的問題:它們存儲在原型對象上。爲什麼'for in'不能枚舉它們,以及如何訪問它們,請參閱重複。 – Bergi

回答

0

該屬性不是可枚舉的(car.prototype.propertyIsEnumerable("drive") === false),因此它不顯示它。見MDN

的了... in語句遍歷一個 對象的枚舉的屬性,在原來的插入順序

否則你是正確的,功能上的原型。

請注意,這是而不是和實例方法。每個實例都有一個實例方法,正如名稱所暗示的那樣。您可以生成實例方法,例如在這裏

class car { 
    constructor() { 
    this.instanceFunc =() => {}; 
    } 
} 

注意明確new car().instanceFunc !== new car().instanceFunc