原型链
对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,称之为原型链;
- 1.当访问一个对象的属性或方法时,会先在对象自身上查找属性或方法是否存在,如果存在就使用对象自身的属性或方法。如果不存在就去创建对象的构造函数的原型对象中查找 ,依此类推,直到找到为止。如果到顶层对象中还找不到,则返回 undefined。
- 2.原型链最顶层为 Object 构造函数的 prototype 原型对象,给 Object.prototype 添加属性或方法可以被除 null 和 undefined 之外的所有数据类型对象使用。
// 构造函数
function Foo(name){
this.name = name;
this.age = 20;
//this.test = "你好,小陈" // 你好,小陈
}
//原型对象;
Foo.prototype.fn = function () {
console.log("f");
}
// Foo.prototype.test = "hello"; //hello
Object.prototype.test = "你好222"; //你好222
let newFoo = new Foo("小陈");
console.log( newFoo.test);
let obj = new Object();
console.log(Object.prototype.__proto__); // null