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对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言 ...
随机推荐
- idea中mybatis generator自动生成代码配置 数据库是sqlserver
好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 generato ...
- Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment
alpine linux 真是不错.小巧.迅捷! 官方的各个版本的alpine镜像内没有带图形环境的.那我们如何构建自己的桌面图形环境呢? 其实:这个问题,在起官网的wiki内有指南,我们根据那些相关 ...
- 【转】细谈Redis和Memcached的区别
Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较: Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支 ...
- 2018-10-29 A股主要指数的市盈率(PE)估值高度
全指材料(SH000987) - 2018-10-29日,当前值:11.9289,平均值:30.66,中位数:26.1407,当前 接近历史新低.全指材料(SH000987)的历史市盈率PE详情 全指 ...
- position absolute定位之所属的containing box
http://www.w3.org/TR/CSS2/visudet.html#containing-block-details http://www.zhihu.com/question/199267 ...
- Python一个简单的数据库类封装
#encoding:utf-8 #name:mod_db.py '''使用方法:1.在主程序中先实例化DB Mysql数据库操作类. 2.使用方法:db=database() db.fet ...
- 基于net.tcp的WCF配置实例解析(转)
http://www.cnblogs.com/scy251147/archive/2012/11/23/2784902.html 原文 本文主要通过文件配置来讲解如何编写一个基于net.tcp的Win ...
- SVN的Hooks功能--强制添加注释
所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念.当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本 ...
- 【转载】浅谈TDD、BDD与ATDD软件开发
转载自(此处仅供学习):http://blog.csdn.net/zhenyu5211314/article/details/22033295 1. 首先了解一下这三个开发模式都是什么意思: TDD: ...
- SaltStack 批量执行脚本
这里演示如何使用 salt-master 对多台 salt-minion 批量执行脚本,步骤如下: [root@localhost ~]$ cat /srv/salt/top.sls # 先定义入口配 ...