原型和原型链

原型

定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。

特点
1.利用原型特点和概念,可以提取共有属性
原型的增删改查必须用Car.prototype.属性来改

    Car.prototype.height=1400;//共有属性
    Car.prototype.lang=4900;//共有属性
    Car.prototype.carName='BMW';//共有属性
    function Car(color,owner){
        this.owner=owner;
        this.color=color;
    }
    var car =new Car('red','prof.li');  
    var car1=new Car('blue','prof.ji');
Car.prototype{
        height=1400;//共有属性
        lang=4900;//共有属性
        carName='BMW';//共有属性
}
    function Car(color,owner){
        this.owner=owner;
        this.color=color;
    }
    var car =new Car('red','prof.li');  
    var car1=new Car('blue','prof.ji');

2.对象查看对象的构造函数 --->constructor
这个对象的constructor是本身存在的,也可以手动修改 07

function Person(){
        
    }
    function Car(){

    }
    Car.prototype = {
       constructor:Person
     
    }
     var car = new Car();

3.对象如何查看原型 --->隐式原型proto

Person.prototype.name = 'sunny';
    function Person(){

    }
    var person = new Person();//person.name=cherry
    Person.prototype={//改了原型,换了个新对象
        name:'cherry'
    }

比如:引用值的相互赋值

var obj={name:'a'}
    var obj1=obj;//obj1.name=a
    obj={name:'b'};
Person.prototype.name = 'sunny';
    function Person(){

    }
    var person = new Person();//person.name=sunny
    Person.prototype.name='cherry';//在原有的基础上改了属性值

.查找属性,如果本身没有,则会去proto中查找,也就是构造函数的显式原型中查找,如果构造函数中也没有该属性,因为构造函数也是对象,也有proto,那么会去它的显式原型中查找,一直到null,如果没有则返回undefined

原型链

你可能感兴趣的:(原型和原型链)