我是JavaScript新手,如果我誤解了一個概念,請隨時告訴我。如何在這種情況下覆蓋屬性
我有下面的類:
var Human = function() {};
Object.defineProperty(Human.prototype, 'name', {
get: function() { return this._name; },
set: function (value) { this._name = value; },
configurable: true,
enumerable: true
});
我再定義以下子對象:
var Man = function() {};
Man.prototype = new Human(); //Am I inherting Human's prototype (and properties) here?
Man.prototype.name = 'Matt'; //If so, I should be setting Man's name property (overriding the value inherited from Human)
然而,console.log(Man.name)
打印出""
。
爲什麼會這樣,我該如何正確覆蓋Human
的屬性?
PS:
我也曾嘗試
Man.name = 'Matt';
,而不是
Man.prototype.Name = 'Matt';
但我得到了同樣的行爲。
Ps2的:
我還應該注意的是,如果我執行console.log(Man.prototype._name)
我得到的預期輸出"Matt"
'Man.name'是_function name_,它與'name'屬性無關。如果你做了'var Man = function someName(){};','Man.name'就是''someName「'。無論如何,你的預期行爲到底是什麼? – Xufox