一. js原型
1. prototype
每个函数对象都有一个prototype属性,这个属性的指向被称为该函数对象的原型对象。
function Person(age) {
this.age = age
}
Person.prototype.name = 'kavin'
var person = new Person()
console.log(person.name) //kavin
函数的prototype指向了一个对象,这个对象正是调用构造函数时创建的实例的原型,也就是person的原型。
2 . __ proto __
这是每个对象(除null外)都会有的属性,叫做__proto__,这个属性会指向该对象的原型。
function Person() {
}
var person = new Person();
console.log(person.__proto__ === Person.prototype); // true
补充
绝大部分浏览器都支持这个非标准的方法访问原型,
然而它并不存在于 Person.prototype中,实际上,
它是来自于 Object.prototype ,与其说是一个属性,
不如说是一个 getter/setter,当使用 obj.__proto__ 时,
可以理解成返回了 Object.getPrototypeOf(obj)。
3. constructor
每个原型都有一个constructor属性,指向该关联的构造函数。
function Person() {
}
console.log(Person===Person.prototype.constructor) //true
原型属性关系