zoukankan      html  css  js  c++  java
  • 《JS设计模式笔记》构造函数和工厂模式创建对象

    工厂模式

     1 function createPerson (name,age,job) {
     2           var o=new Object();
     3           o.name=name;
     4           o.age=age;
     5           o.job=job;
     6           o.sayName=function(){
     7               alert(this.name);
     8           };
     9           return o;
    10       }; 
    11       var person1=createPerson("Terry",24,"Software Engineer");
    12       person1.sayName();
    13       var Person2=createPerson("Terry2",24,"Software Engineer2");
    14       person2.sayName();

    构造函数模式

     1  function Person(name,age,job){
     2           this.name=name;
     3           this.age=age;
     4           this.job=job;
     5           this.sayName=function(){
     6               alert(this.name);
     7           }
     8       }
     9       var person1=new Person("Terry",23,"Engineer Software");
    10       person1.sayName();

      person1对象有一个constructor属性,该属性指向Person,constuctor属性最初是用来标识对象类型的。但是 instanceof操作符要更可靠一些。

    1 alert(person1 instanceof Object);//ture
    2 alert(person1 instanceof Person);//ture

      自定义构造函数意味着将来可以将它的实例标识为一种特定的类型,这正是构造函数模式胜过工厂模式的地方。
      构造函数也是函数,任何函数只要通过new操作符来调用,那它就可以做为构造函数;而任何函数不通过new操作符来调用,那它跟普通函数也不会有什么两样。

    1、当做构造函数来使用

    1 var person=new Person("Terry",23,"Software Engineer");
    2 person.sayName();

    2、作为普通函数来调用

    1 Person("Terry",25,"Doctor");
    2 window.sayName();

    3,在另一对象作用域中调用

    1 var o=new Object();
    2 Person.call(o,"Terry",23,"Nurse");
    3 o.sayName();

      当在全局作用域中调用一个函数时, this对象总是指向Global对象(在浏览器中就是window对象)。

      因此,在调用完函数之后,可以通过window对象来调用sayName()方法,并且还返回了"Terry"。

      最后,也可以使用 call()(或者 apply())在某个特殊对象的作用域中调用 Person()函数。

      这里是在对象o的作用域中调用的,因此调用后 o 就拥有了所有属性和 sayName()方法。

    构造函数的问题

      ...

      ...

  • 相关阅读:
    golang pprof 使用
    iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多...
    二分查找
    golang 切片copy复制和等号复制的区别
    维生素
    LinkedBlockingQueue
    ArrayBlockingQueue
    wordpress文章点击次数统计插件WP Postviews 使用方法
    windows7下cmd窗口使用ssh登录服务器(云、本地)
    WinISO Standard V6.4.1.6137 免费无限制版
  • 原文地址:https://www.cnblogs.com/lvyongbo/p/4729792.html
Copyright © 2011-2022 走看看