面试大部分会问到的问题,问一次不会问一次不会,这次我要牢牢记住你。。。
原型
我们创建的每一个函数都有一个prototype属性,就是原型属性。这个属性有一个指针,指向一个对象。通俗的说,他是 通过调用构造函数而创建的对象实例的原型方法。
来,用代码解释下
function Person(){
}
Person.prototype.name = '薛之谦'
Person.prototype.age = '40'
Person.prototype.sayName = function(){
console.log(this.name)
}
var person1 = new Person()
var person2 = new Person()
person2.sayName() // 薛之谦
alert( person1.sayName == person2.sayName)//true
用图形来展示下
原型链
首先,有个疑问,既然对象都有一个原型,那么原型对象也是对象,原型的原型是什么? 原型对象是对象,他是由Object创建了,原型对象的原型就是Object的原型
看图
那么又来了,Object.prototype的原型是什么 可以在控制台打印下看看
console.log(Object.prototype.__proto__ === null) // true
由此可见Object.prototype的原型时null
以上就是一个原型链,每个对象可以访问Object的原型上的属性