我正在尝试实现原型继承,但我不理解它的行为。
考虑以下示例:
var config = {
writable: true,
enumerable: true,
configurable: true
};
var defineProperty = function( obj, name, value ) {
config.value = value;
Object.defineProperty( obj, name, config );
}
var man = Object.create( null );
defineProperty( man, 'sex', 'male' );
var yehuda = Object.create( man );
defineProperty( yehuda, 'firstName', 'Yehuda' );
defineProperty( yehuda, 'lastName', 'Katz' );
当我访问正确的yehuda.sex
返回male
值时,但是当我尝试更新值时实际发生的是sex
在yehuda
.
一种可能的解决方案是直接访问原型属性 ( Object.getPrototypeOf(yehuda).sex = 'female'
),但这意味着我需要知道对象所属的属性。