
<script>
// 自定义构造函数
function Person(name,age) {
this.name = name;
this.age = age;
// this.sayName = function () {
// console.log(“hello”);
// }
}
// 将所有实例共享的属性和方法,都添加给原型对象
Person.prototype.type = “human”;
// Person.prototype.sayName = function () {
// console.log(this.name);
// };
// 生成对象实例
var person1 = new Person(“Bob”,18);
var person2 = new Person(“Mike”,20);
// 方法的调用查找
// person1.sayName();
console.log(person1.valueOf());
// console.log(person1);
// var o = person1.proto; //指向的是 Person 构造函数的原型对象
// // 任何一个对象都有 proto 属性,指向的就是该对象的 构造函数的 原型对象
// var o2 = o.proto;
// console.log(o2.constructor);
// console.dir(o2);
// console.dir(o2.proto);
</script>
原型链查找机制
每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性:
1.搜索首先从对象实例本身开始
2.如果在实例中找到了具有给定名字的属性,则返回该属性的值
3.如果没有找到,则继续搜索指针指向的原型对象,
在原型对象中查找具有给定名字的属性
- 如果在原型对象中找到了这个属性,则返回该属性的值