- 浏览: 497119 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (339)
- C# (2)
- Java集合 (7)
- Java设计模式 (15)
- Java基础 (31)
- Java-Spring (7)
- Java-Spring AOP (9)
- Java-Spring Transaction (6)
- Java-Hibernate (13)
- Jsp (7)
- JSTL (2)
- 加密解密 (13)
- sql (3)
- 数据库技术 (7)
- JQuery (2)
- css (3)
- JavaScript (19)
- Linux (34)
- 项目管理 (5)
- Tomcat (5)
- Oracle (4)
- axis2 (5)
- Linux c/c++ (40)
- Linux 防火墙及抓包分析 (10)
- Linux 环境配置 (3)
- Linux 高级命令 (14)
- Linux Server 配置 (9)
- c++ 内存管理 (4)
- JUnit (1)
- SSL 通信 (2)
- windows 系统调试 (8)
- 字符串处理 (8)
- 排序算法 (7)
- ACE (1)
- IT技术 (1)
- 敏捷开发 (1)
- TCPIP (4)
- 汇编语言 (7)
- STL (2)
- Struts (1)
- iBatis (3)
- 音视频开发 (2)
- Java多线程 (3)
- 架构设计 (2)
- Java网络编程 (1)
- Ubantu (0)
- Eclipse (2)
最新评论
-
df270464278:
请问博主有遇到中文乱码的问题吗?就是json字符串里面包含中文 ...
cur发送json字符串, post 请求 -
ykbj117:
你们知道刘绍华么?就是北邮的一个教授,专门研究WebRTC的资 ...
WebRTC -
隐形的翅膀:
不会用powershell
去除SVN标志 -
lengbamboo:
改注册表比较危险,给个powershell的脚本:powers ...
去除SVN标志 -
hedong56:
[/b][b][i][/i][u][/u][flash=20 ...
JAVASCRIPT定义对象的四种方式
先写一个函数,下面几个方式会用到
工厂方式
先创建对象,然后添加属性和方法,不需要用NEW创建对象,
如果把函数写在内部,每次调用都会创建新的函数,放在外面,封装性不好
构造函数方式
在构造函数内部不创建对象,使用this关键字,创建时候用new操作符,如果把函数声明在内部,存在和工厂方式相同的问题,重复创建函数。为每个对象都创建独立的函数版本。放在外部,封装性不好
原型方式,创建对象时不能使用构造传递参数,必须先创建对象,然后改变属性的值
混合原型和构造函数方式
可以传递参数构造对象,多个实例对象共享一个函数
第四种的方式看上去也很散落,可以改进一下
优点:
1. 可以传参数构造一个新对象
2. 当有多个对象产生时,不会创建多个函数实体,没有内存浪费
3. 封装想很好,属性和方法分开,
function showSalary(){ alert(this.salary); }
工厂方式
先创建对象,然后添加属性和方法,不需要用NEW创建对象,
如果把函数写在内部,每次调用都会创建新的函数,放在外面,封装性不好
function createWorker(sAage,sSalary,sDepartment){ var oWorker=new Object(); oWorker.age=sAage; oWorker.salary=sSalary; oWorker.department=sDepartment; //创建函数的方式一,指向我们文章开头写好的函数名,缺点是函数在对象的外部,封装性不好 oWorker.tellSalary=showSalary; //创建函数的方式二,在对象内部声明匿名函数,虽然封装在对象内部了,但没个对象会有不同的函数版本,浪费内存 oWorker.tellSalary=function(){ alert(this.salary); } return oWorker; } var worker1=createWorker(24,1000,"Dev"); worker1.tellSalary(); var worker2=createWorker(24,3000,"Dev"); worker2.tellSalary();
构造函数方式
在构造函数内部不创建对象,使用this关键字,创建时候用new操作符,如果把函数声明在内部,存在和工厂方式相同的问题,重复创建函数。为每个对象都创建独立的函数版本。放在外部,封装性不好
function Worker(sAage,sSalary,sDepartment){ this.age=sAage; this.salary=sSalary; this.department=sDepartment; //同工厂方式 this.tellSalary=showSalary; //同工厂方式 this.tellSalary=function(){ alert(this.salary); } } var worker3=new Worker(24,1000,"Dev"); worker3.tellSalary(); var worker4=new Worker(24,3000,"Dev"); worker4.tellSalary();
原型方式,创建对象时不能使用构造传递参数,必须先创建对象,然后改变属性的值
function Worker(){ } Worker.prototype.age=24; Worker.prototype.salary=1000; Worker.prototype.department="Dev"; Worker.prototype.homeaddress=new Array("www","dd"); // 创建多个对象时,要想一想此处为什么不会和构造函数方式及工厂方式一样,创建多个函数的实例 //要理解prototype的概念,prototype是父对象的一个实例 Worker.prototype.tellSalary=function(){ alert(this.age); } var worker5=new Worker(); var worker6=new Worker(); worker5.tellSalary(); alert(worker5.homeaddress) //修改原型中引用类型的值,会影响到所有已经实例化的对象 worker6.homeaddress.push("gg") alert(worker5.homeaddress)
混合原型和构造函数方式
可以传递参数构造对象,多个实例对象共享一个函数
function Worker(sAage,sSalary,sDepartment){ this.age=sAage; this.salary=sSalary; this.department=sDepartment; this.homeaddress=new Array("www","dd"); } //只创建tellSalary函数一个实例,没有内存浪费 Worker.prototype.tellSalary=function(){ alert(this.age); } var worker7=new Worker(23,3000,"Dev"); var worker8=new Worker(43,1000,"Dev"); worker7.tellSalary(); alert(worker7.homeaddress) // ww dd worker8.homeaddress.push("gg") alert(worker7.homeaddress) //www dd alert(worker8.homeaddress) // www dd gg
第四种的方式看上去也很散落,可以改进一下
var person=function(sname,sage){ this.name=sname; this.age=sage; }; person.prototype={ tellName:function(){ alert(this.name); }, tellAge:function(){ alert(this.age); } };
优点:
1. 可以传参数构造一个新对象
2. 当有多个对象产生时,不会创建多个函数实体,没有内存浪费
3. 封装想很好,属性和方法分开,
发表评论
-
Java Script 闭包
2014-11-14 20:46 722Javascript闭包就是在另一个作用域中保存了一份它从上一 ... -
dojo 的压缩
2012-03-26 17:06 12941. 命令 build.bat profile=foo ac ... -
JavaScript Compress
2011-06-14 15:58 9871. YUI java -jar yuicompress.j ... -
apply 使用的一个例子
2010-11-17 09:25 1046<html> <head> & ... -
Google 地图的一些资料
2010-11-17 09:22 991国内一个google map api 开发者的博客 http: ... -
JQuery 对一些特殊HTML元素的操作
2010-11-17 09:12 10591. $("#select_id").ch ... -
javascript compress
2010-10-08 15:51 10451. packer 2. dojo 3. ie 内存泄露探 ... -
扩展Jquery
2010-08-20 15:59 10721. 为jQuery添加全局函数 jQuery ... -
JavaScript 实现事件的广播,并让各个对象执行事件
2010-07-30 15:32 1744<html> <head> & ... -
在浏览器中使用flash 存储客户端数据
2010-07-28 11:05 13321. example 1 jStore fla ... -
IE中使用firebug
2010-07-19 09:09 11681. IE 中使用FireBug 在页面中引入 firbug ... -
javascript 正则表达式应用两例
2010-05-13 10:19 1299Javascript 正则表达式 1. test reg ... -
tinymce 应用四---为tinymce添加一个plugin
2010-04-21 16:33 7778如何为TinyMce写一个插件 1. 目录切换到tiny_m ... -
tinymce 应用 三
2010-02-21 14:34 1847在ToolBar上添加一个listbox <scri ... -
tinymce 应用 二
2010-02-21 14:07 1812在源代码编辑器和所见即所得编辑器之间进行切换 <fo ... -
tinymce 应用 一
2010-02-21 13:35 2933添加去除Tool Bar <script type=& ... -
不同浏览器的JavaScript 常见问题
2009-11-25 15:28 10731. 在ie6下点a标签不会submit,原来在a的href上 ... -
JavaScript 对象实现继承的几种方式
2009-05-26 11:12 2567先定义一个对象classA,我们要实现一个新对象,继承clas ...
相关推荐
Javascript对象定义的几种方式
下面将详细介绍JavaScript定义对象的四种主要方式:字面量语法、构造函数、对象解构和Proxy。 1. **字面量语法** 字面量语法是定义JavaScript对象最简单、最常见的方法。通过大括号`{}`来创建一个空对象,然后通过...
在讨论JavaScript中定义对象的几种方式之前,我们先理解一下JavaScript中的对象到底是什么。JavaScript是一种基于原型的编程语言,对象是其核心概念之一。对象可以被视为一个容器,存储各种键值对集合,键为属性名,...
JavaScript定义类的几种方式包括工厂方式、构造函数和原型方式,每种方法都有其特点和适用场景,接下来我们将详细探讨。 工厂方式是最早期的面向对象编程在JavaScript中的实践之一。使用工厂方式定义类,本质上就是...
本文主要探讨了四种常见的创建JavaScript对象的方法:工厂方式、构造函数方式、原型方式以及混合构造函数/原型方式。 1. **工厂方式**: 工厂模式是一种设计模式,它提供了一种创建对象的最佳方式。在JavaScript中...
本文将深入探讨JavaScript创建对象的8种常见方式,帮助你更好地理解和掌握这门动态类型的编程语言。 1. **字面量(Literal)方式** 这是最简单直接的创建对象的方式,通过大括号{}来定义一个对象,然后在内部用...
JavaScript是一种基于原型的对象导向语言,它的对象定义方式具有独特的灵活性。在本文中,我们将深入探讨JavaScript对象的定义、创建方法以及相关的工具和技术。 首先,我们要了解JavaScript对象的本质。对象是由...
类本质上是对构造函数和原型模式的一种语法糖,提供了更简洁的方式来定义类和子类。 #### 四、本书主要内容概述 本书全面覆盖了面向对象编程的基础理论,并结合JavaScript的具体实现进行讲解。 - **第一章:...
总结以上四种方式,在JavaScript中定义类或函数,可以根据实际的应用场景和需求,选择最合适的方式来实现对象的创建和管理。工厂方式适合创建不需要保持类型统一的对象;构造函数方式则更符合面向对象的原则;原型...
在JavaScript中,可以通过构造函数或类来创建对象,并通过定义方法来隐藏具体的实现细节。此外,ES6引入了类的概念,进一步增强了抽象的能力。 **示例代码:** ```javascript class USBDevice { constructor(name)...
这种方式定义的属性会被所有通过同一个构造函数创建的对象共享。 ##### 3.2 私有属性 私有属性可以通过闭包来实现: ```javascript function Student(name, age) { var privateName = name; // 私有属性 this....
JavaScript是一种高级的、解释型的编程语言,它支持面向对象的编程范式,允许开发者创建对象、使用继承和多态等面向对象的特性。以下是关于JavaScript面向对象编程的一些关键知识点: 1. 对象:在JavaScript中,...
JavaScript被设计成一种彻底的面向对象语言,尽管它的使用和接受过程中发生了发展和变化,吸引了其他如Ruby、Python、Perl等语言的程序员将他们的编程模式带入JavaScript。 JavaScript的面向对象编程与其他支持对象...
在JavaScript中定义JavaScript对象有两种方式: 方式一: var Book ={ getBookName:function(){ alert("获取书的名称") ; } }; 方式二 var oBook = function(){}; oBook.getBookName=...
继承是JavaScript中实现代码复用的一种方式。通过原型链机制,一个对象可以“继承”另一个对象的属性和方法。原型(prototype)是JavaScript中的关键概念,每个对象都有一个隐式的__proto__属性,指向其构造函数的...
本文将详细探讨三种主要的创建JavaScript对象的方法,并结合“源码”与“工具”的概念,来深入理解这些方式在实际开发中的应用。 一、字面量(Literal)方式 这是最简单直接的对象创建方式,通过大括号 `{}` 将属性...
创建对象通常有两种方式:字面量语法和构造函数。例如,创建一个名片对象: ```javascript var card = { name: 'John Doe', address: '123 Main St', phone: '555-1234', displayInfo: function() { console....
本文旨在深入解析JavaScript面向对象编程的基础,包括对象的基本概念、类与对象的关系、对象的属性与方法、封装、继承与多态,以及JavaScript中对象的实现方式。 #### 对象的基本概念 面向对象编程的核心在于对...