Javascript-Object-Definition
 /* 定义对象的方法:构造函数,函数字面量法,工厂模式,构造函数模式 */
     /**************************************/
     /**                                  **/
     /**         1.原生构造函数法         **/
     /**                                  **/
     /**************************************/
     //只能创建特定的对象,使用原生的构造函数,比如:Object,Array。
     var prince = new Object();
     prince.name = "Prince";
     prince.age = 25;
     prince.job = "Front End Engineer";
     prince.sayJob = function(){
         alert(prince.job);
     };
     var xiaobao = new Object();
     xiaobao.name = "Zhibao Hu";
     xiaobao.age = 25;
     xiaobao.job = "SEO";
     xiaobao.sayJob = function(){
         alert(xiaobao.job);
     };
     prince.sayJob();
     xiaobao.sayJob();
     /**************************************/
     /**                                  **/
     /**           2.字面量法             **/
     /**                                  **/
     /**************************************/
     //javascript对象中实行名称可以加双引号,单引号,或者不加,但是json数据一定要用双引号,不加引号或者用单引号都会出错。
     var xiaoyin = {
         name : "Chaohuan Yin",
         age : 24,
         job : "Wireless Yunyin",
         sayAge : function(){
             //这里如果省略了this就会出错。
             alert(this.age);
         }
     };
     xiaoyin.sayAge();
     //以上两种方法的缺点:使用一个接口创建很多对象,代码重复很多。
     //为了解决这个问题,人们开始使用工厂模式和他的变体
     /**************************************/
     /**                                  **/
     /**           3.工厂模式             **/
     /**                                  **/
     /**************************************/
     //用函数来封装以特定接口创建对象的细节
     function createPerson(name,age,job){
         var o = new Object();
         o.name = name;
         o.age = age;
         o.job = job;
         o.sayAge = function(){
             alert(this.age);
         };
         return o;
     }
     var tangtang = createPerson("Jin Shi",23,"Shop Yunyin");
     tangtang.sayAge();
     //工厂模式没有办法知道一个对象的类型,所以出现了构造函数模式,自己定义构造函数
     /**************************************/
     /**                                  **/
     /**        4.自定义构造函数法        **/
     /**                                  **/
     /**************************************/
     function Person(name,age,job){
         this.name = name;
         this.age = age;
         this.job = job;
         this.sayName = function(){
             alert(this.name);
         };
     }
     //当构造函数使用
     var liujie = new Person("Jie Liu",27,"Yunwei");
     //当普通函数使用
     Person("Qinqin Yu",27,"Shop Yunyin");//添加到window中
     liujie.sayName();
     window.sayName();
     //在另一个对象的作用域中使用
     var o = new Object();
     Person.call(o,"Prince",25,"F2E");
     o.sayName();
     //将构造函数中的方法提取出来
     function Person1(name,age,job){
         this.name = name;
         this.age = age;
         this.job = job;
         this.sayName = sayName;
     }
     function sayName(){
         alert(this.name);
     }
     var prince = new Person1("Prince Yu",25,"Front End Engineer");
     var xiaoyin = new Person1("Chaohuan Yin",24,"Shop Yunyin");
     prince.sayName();
     xiaoyin.sayName();
     /**************************************/
     /**                                  **/
     /**             5.原型模式           **/
     /**                                  **/
     /**************************************/
     //1.原型对象方法
     function Person2(){}
     Person2.prototype.name = "Prince";
     Person2.prototype.age = 29;
     Person2.prototype.job = "F2E";
     Person2.prototype.sayAge = function(){
         alert(this.age);
     };
     var dada = new Person2();
     var prince = new Person2();
     dada.sayAge();
     prince.sayAge();
     //2.原型对象字面量方法
     function Person3(){}
     Person3.prototype = {
         name : "Prince",
         age : 30,
         job : "F2E",
         sayAge : function(){
         alert(this.age);
         }
     };
     var wangzi = new Person3();
     wangzi.sayAge();
     /**************************************/
     /**                                  **/
     /** 6.组合使用构造函数模式和原型模式 **/
     /**                                  **/
     /**************************************/
     function Person4(name,age,job){
         this.name = name;
         this.age = age;
         this.job = job;
         this.friends =["Wangbing","Liutan"];
     }
     Person4.prototype = {
         constructor : Person4,
         sayAge : function(){
         alert(this.age);
         }
     }
     var dada =new Person4("Prince",25,"F2E");
     var xiaobao =new Person4("Zhibao Hu",25,"SEO");
     dada.friends.push("Prince Yu");
     alert(dada.friends);
     alert(xiaobao.friends);
     alert(xiaobao.friends == dada.friends);
     alert(xiaobao.sayAge == dada.sayAge);
     //这是用来定义引用类型的一种默认方式
Javascript-Object-Definition的更多相关文章
- Javascript   Object、Function对象
		
1.Object对象 原型对象 原型是对象的一个属性,也就是prototype属性,每个对象都有这个内部属性,而且他本身也是一个对象. <script type="text/javas ...
 - XML.ObjTree -- XML source code from/to JavaScript object like E4X
		
转载于:http://www.kawa.net/works/js/xml/objtree-try-e.html // ========================================= ...
 - 【EatBook】-NO.1.EatBook.1.JavaData.1.001-《JSON 必知必会-Introduction to JavaScript Object Notation》-
		
1.0.0 Summary Tittle:[EatBook]-NO.1.EatBook.1.JavaData.1.001-<JSON 必知必会-Introduction to JavaScrip ...
 - JSON(JavaScript Object Notation, JS 对象标记)
		
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言 ...
 - Javascript Object.defineProperty()
		
转载声明: 本文标题:Javascript Object.defineProperty() 本文链接:http://www.zuojj.com/archives/994.html,转载请注明转自Ben ...
 - (The application/json Media Type for JavaScript Object Notation (JSON))RFC4627-JSON格式定义
		
原文 http://laichendong.com/rfc4627-zh_cn/ 摘要 JavaScript Object Notation (JSON)是一个轻量级的,基于文本的,跨语言的数据交换 ...
 - JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
		
JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - D ...
 - [Javascript] Conditionally spread entries to a JavaScript object
		
In JavaScript, we often end up composing one object out of several other objects. Luckily there's a ...
 - JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格
		
JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换 ...
 - JSON: JavaScript Object Notation
		
JSON是JavaScript Object Notation 的缩写,是JS提供的一种数据交换格式.1) JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言 ...
 
随机推荐
- Android学习笔记——Intents 和 Intent Filters(二)
			
本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai/p/3993488.html 知识点 ...
 - 1 salt执行模块开发
			
saltstack自带的模块已经很多了,但是有些时候我们需要自己开发出自己的模块来满足自己的需求,那就要自己开发了,下面请看例子 创建_modules目录在file_roots下面 我们需要在file ...
 - Mysql 大量数据导入
			
今天试图用heidisql 导入一个150M的数据文件(.sql), 结果报out of memory 错误.在网上搜了很多案例,都没能解决问题.我甚至怀疑是mysql 的default的内存设置的太 ...
 - Nexus5  破解电信关键步骤
			
5儿子终于摔坏了,送去保养之后,发现之前已破解的电信3G竟然无效了,心碎!!!!!!!!!!!!!!!!!! 尝试恢复efs --还好有备份,备份万岁!!! 不行!继续尝试恢复!还是不行!再试!... ...
 - Nexus5 电信3G保留数据和Root升级Android 6.0
			
前提: A 备份手机重要数据,安全第一 B 进入twrp recovery 备份EFS,建议最好拷贝到电脑上(如果没有twrp,则需要先刷twrp,具体指令请看下面步骤第10条) C 因为Androi ...
 - Android内存泄漏检測与MAT使用
			
公司相关项目须要进行内存优化.所以整理了一些分析内存泄漏的知识以及工作分析过程. 本文中不会刻意的编写一个内存泄漏的程序,然后利用工具去分析它.而是通过介绍相关概念,来分析怎样寻找内存泄漏.并附上自己 ...
 - 8 -- 深入使用Spring -- 2...1 搜索Bean类
			
8.2.1 搜索Bean类 既然不再使用Spring配置文件来配置任何Bean实例,那么只能希望Spring会自动搜索某些路径下的Java类,并将这些Java类注册成Bean实例. tips:Rail ...
 - 产品半夜发现bug让程序员加班,程序员应如何回应?
			
群友半夜2点被产品叫起来改东西,然后他打车去公司加班,群友愤慨,特为此创作一个小段子 产品:XXX出bug了你赶紧看看 修复一下 开发:我宿舍没电脑 没网络啊 产品:你看看周围有没有网吧远程一下 或者 ...
 - Linux下安装配置MySQL
			
一.删除原来的MySQL 在安装前要先确定系统是否已经安装了其他版本的MySQL,如已安装其他版本的MySQL,需先删除后再安装新版本. 1. 执行yum命令,删除MySQL的lib库,服务文件 yu ...
 - Ansible Playbook 使用条件判断语句
			
先介绍一下 gather_facts 参数,该参数用于指定在执行任务前,是否先执行 setup 模块获取主机相关信息,以便给后面的任务使用 [root@localhost ~]# ansible 19 ...