prototype是一个隐藏属性,于是为每个对象提供一个叫_proto_的属性
对象的_proto_与创建它的构造函数的prototype本质上是一个东西
_proto_是站在对象的角度讨论其原型对象
prototype是站在构造函数的角度讨论原型属性,是构造函数创建对象的原型对象
由于_proto_是非标准属性,因此一般不建议使用
<script>
function Student(name) {
this.name = name;
this.show = function () {
console.log("我是一个学生,姓名:" + this.name);
};
};
var stu = new Student("tom"); //stu会自动链接到其构造函数的prototype属性上
stu.show();
//每个对象都有一个__proto__属性,其本质上就是prototype
console.log(stu.__proto__);
console.log(Student.prototype);
console.log(stu.__proto__ === Student.prototype);
//Student.prototype是构造函数Student的原型属性,是对象o的原型对象
//stu.__proto__就表示这个原型对象
</script>