js创建对象的几种方式 标签: javascript 2016-08-21 15:23 123人阅读 评论(0)
1、传统方法,创建一个对象,然后给这个对象创建属性和方法。
var person = new Object();
person.name = "张三";
person.age = 26;
person.getName=function(){
return this.name; //this代表当前作用域下的对象
};
这种方法有一个缺点,再创建类似对象的时候就会产生大量的代码。
2、字面量方法
var person = {
name:"张三",
age:26,
getName:function(){
return this.name;
}
}
3、工厂模式方法
function createPerson1(name,age){
var obj = new Object();
obj.name=name;
obj.age=age;
obj.getName=function(){
return this.Name;
};
return obj;
}
var person1 = creatPerson1("张三",26);
var person2 = creatPerson1("李四",27);
var person3 = new creatPerson1("王五",28);//区分一下new一个函数和直接调用一个函数的区别
注意,工厂模式解决了集中实例化的问题,但是还存在一个问题就是它无法搞清楚是哪个对象的实例。
假设还有一个工厂createPerson2(),那么用这两个工厂产生的实例无法确定是createPerson()1的实例还是createPerson2()工厂的实例。
function createPerson2(name,age){
var obj = new Object();
obj.name=name;
obj.age=age;
obj.getName=function(){
return this.Name;
};
return obj;
}
var pson1 = createPerson1("li",23);
var pson2 = createPerson2("zhagn",24);
alert(pson1 instanceof Object);//true
alert(pson1 instanceof createPerson1);//false
因为它们都是Object对象就无法区分谁到底是谁的对象。
4、构造函数方法
//构造函数
function Person(name,age){
this.name=name;
this.age=age;
this.getName=function(){
return this.name;
};
}
var person = new Person("zhang",23);
alert(person instanceof Object);//true
alert(person instanceof Person);//true
构造函数方法即解决了重复实例化问题,又解决了对象识别问题。
但是注意,构造函数方式并没有像工厂方式一样在内部new一个Object,那么这个对象是怎么产生的呢?
- 构函数没有new Object,但是后台会自动new一个Object。
- this就相当于后台自动new出来的这个Object。
- 构造函数不需要像工厂方法一样返回对象引用,它是后台自动返回的。
构造函数的规范:
- 构造函数也是函数,但函数名第一个字母大写
- 必须new运算符
关于new函数和直接调用函数的区别可以查看我的博客文章:
js中直接调用函数和new函数的区别
js创建对象的几种方式 标签: javascript 2016-08-21 15:23 123人阅读 评论(0)的更多相关文章
- save与Update的合并操作 标签: 关系映射 2017-07-13 15:11 7人阅读 评论(0) 收藏
做save与update的方法合并操作时,判断条件是主体对象的ID是否存在. 但是当页面中,涉及到多个主体对象的关联对象时,情况变得复杂起来,特总结项目中的几点 一.页面中的VO对象属性可以分为三类: ...
- Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)
大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...
- javascript中0级DOM和2级DOM事件模型浅析 分类: C1_HTML/JS/JQUERY 2014-08-06 15:22 253人阅读 评论(0) 收藏
Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...
- Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- XHTML 结构化:使用 XHTML 重构网站 分类: C1_HTML/JS/JQUERY 2014-07-31 15:58 249人阅读 评论(0) 收藏
http://www.w3school.com.cn/xhtml/xhtml_structural_01.asp 我们曾经为本节撰写的标题是:"XHTML : 简单的规则,容易的方针.&qu ...
- 高质量C++C编程指南笔记 标签: c++笔记 2015-11-22 20:59 179人阅读 评论(0) 收藏
1. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数. 2. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面 ...
- Hibernate检索方式 分类: SSH框架 2015-07-10 22:10 4人阅读 评论(0) 收藏
我们在项目应用中对数据进行最多的操作就是查询,数据的查询在所有ORM框架中也占有极其重要的地位.那么,如何利用Hibernate查询数据呢?Hibernate为我们提供了多种数据查询的方式,又称为Hi ...
- SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
(1)Convert 函数 select Convert ( VARCHAR(7),ComeDate,120) as Date ,Count(In_code) as 单数,Sum(SumTrueNum ...
- javascript闭包获取table中tr的索引 分类: JavaScript 2015-05-04 15:10 793人阅读 评论(0) 收藏
使用javascript闭包获取table标签中tr的索引 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
随机推荐
- (转)MySQL5.6主从复制技术
原文:http://www.cnblogs.com/ilifeilong/category/1014799.html MySQL5.6复制技术(4)-MySQL主从复制过滤参数 摘要: 复制的过滤主要 ...
- Django去操作已经存在的数据库
你有没有遇到过这种情况? 数据库,各种表结构已经创建好了,甚至连数据都有了,此时,我要用Django管理这个数据库,ORM映射怎么办??? Django是最适合所谓的green-field开发,即从头 ...
- 在用 Node.js 起服务之前,我们应该知道这些
网络分层 了解计算机网络的同学都知道 OSI 七层网络模型和 TCP/IP 模型.OSI 七层模型是理论上的网络通信模型,而 TCP/IP 是现实中的网络通信概念模型.它们之间的对比关系参考下图. 本 ...
- 8.28_the end
HomeWork the first level 1. 盒模型 #parent { width: 100px; height: 100px; background:black; overflow: h ...
- oracle insert两个关联表
现有一张老师学生表(tb_tea_cou),由于业务需要,需把老师学生表tb_tea_stu拆分成两张表(tb_tea.tb_cou),并把记录insert到这两张子表中(tb_tea.tb_cou为 ...
- 九度oj 1034 寻找大富翁 2009年浙江大学计算机及软件工程研究生机试真题
题目1034:寻找大富翁 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5323 解决:2123 题目描述: 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. 输入: ...
- JavaScript中类型检测
文章首发: http://www.cnblogs.com/sprying/p/4349426.html 本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的. 一. ...
- 数据结构与算法(C++)大纲
1.栈 栈的核心是LIFO(Last In First Out),即后进先出 出栈和入栈只会对栈顶进行操作,栈底永远为0 1.1概念 栈底(bottom):栈结构的首部 栈顶(top):栈结构的尾部 ...
- BNU44583——Star Trek: First Contact——————【01背包】
H. Star Trek: First Contact Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld ...
- rest webapi 返回数据
webapi可以直接返回一个对象,也可以返回json 一.返回一个对象例子 [System.Web.Mvc.AllowAnonymous] [System.Web.Http.HttpGet] publ ...