原型:每个函数都有 prototype 属性,该属性指向原型对象;使用原型对象的好处是所有对象实例共享它所包含的属性和方法。
原型链:主要解决了继承的问题;每个对象都拥有一个原型对象,通过__proto__ 指针指向其原型对象,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层,最终指向 null。
每一个函数都有prototype属性
每一个JS实例对象都有 __proto__属性
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype={
constructor:Person,
sayhi: function(){
console.log("45");
}
}
var p1=new Person("12",12);
console.log(p1);
控制台输出:
Person {name: "12", age: 12}
age: 12
name: "12"
__proto__:
constructor: ƒ Person(name,age)
sayhi: ƒ ()
__proto__: Object