访问Javascript对象原型

这个问题在这里已经有了答案:

  • JavaScript .prototype如何工作? 21个答案

  • 您可以访问原型属性,但它仅存在于Function s上。

    var car = {
        Make: 'Nissan',
        Model: 'Altima'
    }; 
    

    这与以下内容相同:

    var car = new Object();
    car.Make = 'Nissan';
    car.Model = 'Altima'; 
    

    那么, car.__proto__ === Object.prototype

    car.prototype === undefined因为prototype属性只存在于Function s上(如我已经说过的)。

    function Car() {
        this.Make = 'NISSAN';
        this.Model = 'Atlanta';
    }
    

    这里Car.prototype指向Object一个实例,因为Car是一个函数,当函数声明被评估时,它们的prototype被设置为Object一个实例。

    Car.prototype.Year = 2014; //all Car *instances* will have a Year property set to 2014 on their prototype chain.
    
    var c = new Car(); //create an instance
    console.log(c.Year); //2014
    

    覆盖对象的原型链上的方法就像在对象上创建对应的方法一样简单:

    var myObject = new Object();
    myObject.toLocaleString = function() {
      //my own implementation
    };
    

    您可能想要修改构造函数原型:

    function Car(year, make, model) {
      this.year  = year;
      this.make  = make;
      this.model = model;
    }
    
    Car.prototype.toLocaleString = function() {
      return [this.year, this.make, this.model].join(' ');
    };
    
    var civic = new Car(2014, 'Honda', 'Civic');
    civic.toLocaleString(); // => "2014 Honda Civic"
    

    关于Object.prototype这篇MDN文章可能会有所帮助。

    链接地址: http://www.djcxy.com/p/30065.html

    上一篇: Accessing Javascript object prototype

    下一篇: prototypical inheritance javascript