请参阅下面的小提琴/代码:http: //jsfiddle.net/kmiklas/3YdTA/4/
问题:
- 为什么调用子的setter函数——在例子中,调用——
Object.create(99)
改变父的设置?请注意,虽然我们在orange的上下文中调用了这个函数,但它也改变了red的值。 - 更重要的是,如何将继承的 getter/setter 函数应用于子级,而不是父级?
- 我在这里想念什么?
var Square = function () {
var side;
this.setSide = function(s) {
side = s
}
this.getSide = function() {
return side;
}
}
var red = new Square();
var orange = Object.create(red);
red.setSide(100);
var $container = $('#container');
$container.append('orange.getSide(): ' + orange.getSide() + '<br>');
$container.append('red.getSide(): ' + red.getSide() + '</br><br>');
$container.append('<i>Now we call orange.setSide(99)...</i><br></br>');
orange.setSide(99);
$container.append('orange.getSide(): ' + orange.getSide() + ' <i>...as expected.<br></i>');
$container.append('red.getSide(): ' + red.getSide() + '!? <i>Why does the call to orange.setSide(99) affect the side length of the parent?</i></br>');