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对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言 ...
随机推荐
- [转]java的(PO,VO,TO,BO,DAO,POJO)类名包名解释
java的(PO,VO,TO,BO,DAO,POJO)类名包名解释 2015-04-28 20:11 by Loull, 18 阅读, 0 评论, 收藏, 编辑 VO:值对象.视图对象 PO:持久对象 ...
- 复制js的“准”正确用法
function kobe(id) { var targetText = document.getElementById(id); try ...
- MathType如何编辑大三角形符号
MathType中包含的符号超过1000多个,可以满足我们很多学科的使用,尤其是数学中,涉及到很多的符号,常见的就是代数.几何这两大类,当然还有集合之类的符号使用也比较多.我们在用MathType编辑 ...
- python中,如何将两个变量值进行拼接
说明: 字符串和字符串之间可以拼接,那么变量和变量之间如何进行拼接,在此记录下. 操作过程: 1.通过加号 + 操作符,将两个变量拼接在一起 >>> prefix = 'p' > ...
- centos 上不了网了
昨天还用的好好的,今天就上不了网了,郁闷,不过,正好是一次学习linux网络配置的好机会,这会已经把它折腾好了,此文就是在linux下面的浏览器中写的! 先检查一下虚拟机中的网络设置是否正常,由于我的 ...
- mongodb命令(1)
成功启动MongoDB服务后,打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显 ...
- iOS 图片剪切和压缩的几个方法
// 图片剪切 - (UIImage*)clipImageWithImage:(UIImage*)image inRect:(CGRect)rect { CGImageRef imageRef ...
- 【ArcGIS】ArcGIS Android SDK
1.错误提示 11-06 18:12:17.553: A/libc(11929): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 1 ...
- Top 20 NuGet packages for captcha
Top 20 NuGet packages for captcha CaptchaMvc.Mvc4 CaptchaMvc will implement your web MVC application ...
- drawCall_01
在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API(iOS系统中为OpenGL ES).每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销. Unity在运 ...