原型对象

75 阅读1分钟

原型对象(prototype)

  1. 原型对象是一个对象,所有对象都会从原型对象上继承属性和方法。
  2. 我们可以使用构造函数(类)的prototypel属性,或对象的_proto属性获取到它。
  3. 如果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