原型模式理解

 
  1. function Person(){
    }
     Person.prototype.name='Malin';
     Person.prototype.sayname=function(){
                                                   alert(this.name);
                                                 };
    var person1 = new Person ();
    person1 . sayname();   // 'Malin'



  1. Person.prototype.constructor = Person       // Person 是一个构造函数 Person.prototype是一个原型对象,他的constructor属性指向了Person构造函数



  1. person1实质上是与 Person.prototype有直接关系,与Person构造函数无关
    Person.prototype 有很多属性   name    , sayname()...
    person1继承了原型对象的属性和方法
    person1._proto_ == Person.prototype // true



  2. 如果原型中有的属性,和实例对象的属性有重名,则不会去找原型里面的同名属性,因为顺序是,先从这个实例对象的属性找,找到了就不会去原型找了




  3. deleta person1.name //删除实例自己创建的name属性,那么就会去原型中找name属性
  4. 更好的写法
    Person.prototype = {
         constructor : Person,        // 用这种写法会导致 constructor指向Object 所以要重写 constructor指向Person
         name : 'Malin',
         sayname : function(){
                alert( this.name );
          }
    };
  5. 最好的创建实例的方法,构造函数和原型模式混合使用

    function Person(){          //所有的属性,都封装在  构造函数中
        name = 'Malin';
        friends = { 'lihua' , 'xiaoming'};
    }

    Person.prototype = {    //所有的方法, 都封装在原型中
         constructor = Person,
         sayname = function(){
              alert( this.name );
         }
    };
    var person1 = new Person();
    var person2 = new Person();
  6. 无对象属性的时候创建选择动态原型模式

猜你喜欢

转载自blog.csdn.net/qq240814476/article/details/53039874