原型和原型链

135 阅读1分钟

面试大部分会问到的问题,问一次不会问一次不会,这次我要牢牢记住你。。。

原型

我们创建的每一个函数都有一个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的原型上的属性