zoukankan      html  css  js  c++  java
  • js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)

    1.工厂模式

    function a(name){
      var b = new object();
        b.name = name;
        b.say = function(){
            alert(this.name);
        }   
           return b    
    }

    函数内部产生b对象并返回。

    2.构造函数模式

    function Person(name, url) {    //注意构造函数名第一个字母大写
      this.name = name;
      this.url = url;
      this.alertUrl = alertUrl;
    }
     
    function alertUrl() {
      alert(this.url);
    }

    因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。

    3.原型模式

    function Person(){  
    }
    
    Person.prototype.name = "bill";
    Person.prototype.address = "GuangZhou";
    Person.sayName = function (){
           alert(this.name);  
    }
    
    var person1 = new Person();
    var person2 = new Person();
     
    //测试代码
    alert(person1.name);   // bill
    alert(person2.name);    // bill
    person1.sayName();    //bill
    person2.sayName();    //bill
    
    person1.name = "666";
    
    alert(person1.name);   // 666
    alert(person2.name);    // bill
    person1.sayName();    //666
    person2.sayName();    //bill

      我们创建的每个函数都有prototype(原型)属性,这个属性其实是一个指针,指向一个对象。

      当构造一个person对象例如person1之后,它的默认name属性就是bill。如果要改name值的话就要对person1.name操作。这只是改了这个对象的name属性。alert(person1.prototype.name)依然是弹出bill,即原型上的name属性

    注:这只是本人学习的一些总结,如果有不对的地方还请各位大腿指正!

  • 相关阅读:
    异常练习
    Comparator 排序 ArrayList 实操练习
    50道Java线程面试题
    Java ArrayList排序方法详解
    Map集合利用比较器Comparator根据Key和Value的排序
    Java Map 键值对排序 按key排序和按Value排序
    实现java随机数Random的几招
    如何在Java中获取键盘输入值
    力扣 ——3Sum python (三数之和)实现
    python中函数用法
  • 原文地址:https://www.cnblogs.com/yonglin/p/6262896.html
Copyright © 2011-2022 走看看