zoukankan      html  css  js  c++  java
  • js面向对象-创建对象

    工厂模式

    工厂模式通过在函数中创建一个对象(原材料),然后通过给这个对象添加属性和方法(加工),最后返回这个对象(出厂)。

    // 1.工厂模式
    function createPerson(name,age,job) {
    	//1.原材料
    	var o = new Object(); 
    	//2.加工 
    	o.name = name;
    	o.age = age;
    	o.job = job;
    	o.sayName = function() {
    		alert(this.name);
    	};
    
    	//3.出厂
    	return o;
    }
    var yoomin = createPerson('yoomin',24,'programmer');  // 调用,没有new
    

      构造函数模式

    构造函数是通过给this添加属性和方法,在new的时候才返回一个对象,构造函数本身是没有返回值的。

    // 2.构造函数模式
    function Person(name,age,job) {
    	this.name = name;
    	this.age = age;
    	this.job = job;
    	this.sayAge = function() {
    		alert(this.age);
    	}
    }
    var Jay = new Person('Jay',30,'singer');  //调用
    

    构造函数方式与原型方式组合

    使用构造函数方式定义属性,用原型方式定义方法和共享变量:

    构造函数定义属性:

    function Person(name,age,job) {
    	// 构造函数模式定义实例属性
    	this.name = name;
    	this.age = age;
    	this.job = job;
    }
    

      原型方式定义方法:

    Person.prototype = {
    	//原型模式定义方法和共享属性
    	constructor: Person,  //重写原型改变了constructor,修正回来
    	sayName:function() {
    		alert(this.name);
    	},
    	sayJob:function() {
    		alert(this.job);
    	}
    }
    

      注意:用字面量方式定义prototype,会改变prototype的constructor指向,需要修正。

    创建对象:

    var Kelly = new Person('Kelly',35,'singer');  //调用
    Kelly.sayName();  //Kelly
    

      

  • 相关阅读:
    UVALive2678子序列
    UVA11549计算机谜题
    UVA11520填充正方形
    LA3635派
    UVALive3971组装电脑
    记录未完成题目
    SPOJ 6219 Edit distance字符串间编辑距离
    ACM组队安排-——杭电校赛(递推)
    逆袭指数-——杭电校赛(dfs)
    油菜花王国——杭电校赛(并查集)
  • 原文地址:https://www.cnblogs.com/yoomin/p/3932976.html
Copyright © 2011-2022 走看看