原型对象(prototype)
- 原型对象是一个对象,所有对象都会从原型对象上继承属性和方法。
- 我们可以使用构造函数(类)的prototypel属性,或对象的_proto属性获取到它。
- 如果User是Admin的原型对象,那么是不是就可以继承了?
//ES5
//创建一个构造函数
function User() { }
//使用构造函数的prototype属性获取原型对象
User.prototype = { name: "xiaoming" }
var user = new User()
console.log(user.name)
//创建一个构造函数
function User() { }
var user = new User()
//使用user的__proto__ 属性来获取原型对象
user.__proto__ = { name: "xiaohong" }
console.log(user.name)
通过原型对象实现继承
//通过原型对象实现继承
function User() {
this.login = function () {
console.log("登录成功")
}
}
function Admin() { }
Admin.prototype = new User()
var admin = new Admin()
admin.login()
原型链:
每个对象都可以有一个原型,这个原型还可以有它自己的原型以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找
Object对象的原型:
- 所有原型链的终点都是Object.prototype.
- 只要在Objectx对象的原型上添加属性或方法,所有对象都可以使用。
内置对象的方法是通过原型对象定义的:
1.Array:push、join
2.Date getMinites,getHours
3.Function:call、apply、bind
4.Object toString