zoukankan      html  css  js  c++  java
  • JavaScript创建对象的七种方法

    一、 工厂模式

    创建:

    function createPerson(name,behavior){
    var p=new Object();
    p.name=name;
    p.behavior=behavior;
    p.getInfo=function(){
    alert(this.name+"在"+this.behavior)
    }    
    p.getInfo();
    }
    var person=createPerson("张三",["打游戏","看书"]);

    二、 构造函数模式

    创建:

    function createPerson(name,behavior){
    this.name=name;
    this.behavior=behavior;
    this.getInfo=function(){
    alert(this.name+"在"+this.behavior)
    }
    }
    var person=new createPerson("张三",["打游戏","看书"]);
    person.getInfo();


    三、原型模式

    创建:

    function createPerson(){}
    createPerson.prototype.name="张三";
    createPerson.prototype.behavior=["打游戏","看书"];
    createPerson.prototype.getInfo=function(){
    alert(this.name+"在"+this.behavior)
    }
    var person=new createPerson();
    person.getInfo();

    四、组合模式(构造函数与原型)

    创建:

    function createPerson(name,behavior){
    this.name=name;
    this.behavior=behavior;
    }
    createPerson.prototype.getInfo=function(){
    alert(this.name+"在"+this.behavior)
    }
    var person=new createPerson("张三",["打游戏","看书"]);
    person.getInfo();

    五、动态原型模式

    创建:

    function createPerson(name,behavior){
    this.name=name;
    this.behavior=behavior;
    if(typeof this.getInfo!="function"){
    createPerson.prototype.getInfo=function(){
    alert(this.name+"在"+this.behavior);
    }    
    }
    }
    var person=new createPerson("张三",["打游戏","看书"]);
    person.getInfo();

    六、寄生构造函数模式

    创建:

    function createPerson(name,behavior){
    var p={};
    p.name=name;
    p.behavior=behavior;
    p.getInfo=function(){
    alert(this.name+"在"+this.behavior)
    }    
    p.getInfo(); 
    }
    var person=new createPerson("张三",["打游戏","看书"]);

    七、稳妥构造函数模式

    创建:

    function createPerson(name,behavior){
    var p={};
    p.getInfo=function(){
    alert(name+"在"+behavior)
    }    
    p.getInfo(); 
    }
    
    var person=new createPerson("张三",["打游戏","看书"]);
    
     

    参考网址:http://www.cnblogs.com/ifat3/p/7429064.html

  • 相关阅读:
    君子藏器于身,伺时而动
    高级前端面试集锦
    ES6标准入门(第三版).pdf----推荐指数⭐⭐⭐⭐⭐
    《Vue.js实战》--推荐指数⭐⭐⭐⭐
    如何让vue自定义组件可以包裹内容,并且渲染出来,以及组件的组合使用
    vue里如何灵活的绑定class以及内联style
    为什么VUE注册组件命名时不能用大写的?
    在github上搭建一个静态的个人网站
    leetcode-6-basic
    leetcode-5-basic
  • 原文地址:https://www.cnblogs.com/jian138/p/8531152.html
Copyright © 2011-2022 走看看