zoukankan      html  css  js  c++  java
  • JS创建对象的几种模式

    1、工厂模式

    考虑到javascript无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节

    	    <script type="text/javascript">
    	    	function createPerson(name,age,job){
    	    		var o = new Object();
    	    		o.name = name;
    	    		o.age = age;
    	    		o.job = job;
    	    		o.sayName = function() {
    	    			alert(this.name);
    				};
    				return o;
    	    	}
    	    	
    	    	var person1 = createPerson("zy","21","web devoloper ");
    	    	var person2 = createPerson("smirk","21","UI ");
    	    	
    	    	person1.sayName();
    	    	person2.sayName();
    	    </script>
    

      工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)

    2、构造函数模式

    javascript中的构造函数可用来创建特定类型的对象,可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。

    	    <script type="text/javascript">
    	    	function Person(name,age,job){
    	    		this.name = name;
    	    		this.age = age;
    	    		this.job = job;
    	    		this.sayName = function(){
    	    			alert(this.name);
    	    		};
    	    	}
    	    	
    	    	var person1 = new Person("zy","21","web devoloper ");
    	    	var person2 =  new Person("smirk","21","UI ");
    	    	
    	    	person1.sayName();
    	    	person2.sayName();
    
    	    </script>
    

     按照惯例,构造函数始终都应该以一个大写字母开头。

    以这种方式调用构造函数实际上会经历一下四个步骤:

     (1)创建一个新对象;

     (2)讲构造函数的作用域赋给新对象

     (3)执行构造函数中的代码(为这个新对象添加属性)

     (4)返回新对象

    前面例子的最后,person1和person2分别保存着Person的一个不同的实例,这两个对象都有一个constructor属性,属性指向Person

    alert(person1.constructor == Person);

  • 相关阅读:
    webpack基础
    LeetCode232. 用栈实现队列做题笔记
    mysql 时间加减一个月
    leetcode 1381. 设计一个支持增量操作的栈 思路与算法
    LeetCode 141. 环形链表 做题笔记
    leetcode 707. 设计链表 做题笔记
    leetcode 876. 链表的中间结点 做题笔记
    leetcode 143. 重排链表 做题笔记
    leetcode 1365. 有多少小于当前数字的数字 做题笔记
    LeetCode1360. 日期之间隔几天 做题笔记
  • 原文地址:https://www.cnblogs.com/yingsmirk/p/2406898.html
Copyright © 2011-2022 走看看