实例总是能够从原型获得最新值,不管何时被实例化、更改或附加,在这种意义上,prototype属性是动态的。
看下面一段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>继承原型属性的实例总是能够获得最新值</title>
</head>
<body>
<script>
var Bar=function Bar(){};
Bar.prototype.x=1;
var BarInstance=new Bar();
console.log(BarInstance.x);
Bar.prototype.x=2;
console.log(BarInstance.x);
</script>
</body>
</html>
运行结果如下图:
其实不管是使用默认的原型对象还是用对象覆盖它,查找链的工作方式都是相同的。如下面一段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>继承原型属性的实例总是能够获得最新值</title>
</head>
<body>
<script>
var Bar=function Bar(){};
Bar.prototype={x:1};
var BarInstance=new Bar();
console.log(BarInstance.x);
Bar.prototype.x=2;
console.log(BarInstance.x);
</script>
</body>
</html>
输出结果图如下:
可以看到输出结果依然不变。