- 浏览: 1334399 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
写道
1、js区别于java的特性还有:实例化类对象时,如果不传递参数,则可以省略括号,如:
var object = new Object;
var string = new String;
var date = new Date;
当然也可以写成带括号的,如:
var object = new Object();
建议带括号,以符合java模式
以上Object、String、Date等都是内置类,即本地类
2、数组的两种呈现方式:数组类Array及[]
var array = new Array();//array为数组类实例对象,也就是数组
array.push(1);
array.push(2);
array.push(3);
alert(array.length);//结果:3 数组类Array有length属性
var array = [];
array.push(1);
array.push(2);
array.push(3);
var array = [1,2,3];
以上3种情况结果都一样,第3种用的最常见
3、早绑定和晚绑定:js都是晚绑定,java都是早绑定
4、js中类的定义方式:
A、工厂方式定义类
第一种方式:
function createObject(username,password){
var object = new Object();
object.username = username;
object.password = password;
//多个对象就会有多个匿名对象(也就是匿名方法)产生
object.get = function(){
//此时,this指向的是当前对象,即object
alert("username: " + this.username + "\npassword:" + this.password);
};
return object;
}
var o1 = createObject("zhangsan","123456");
o1.get();
第二种方式:
function get(){
//此时,this指向的是调用get方法的对象
alert("username: " + this.username + "\npassword:" + this.password);
}
function createObject(username,password){
var object = new Object();
object.username = username;
object.password = password;
//不管有几个对象产生,get方法(对象)只产生一个
object.get = get;
return object;
}
var o1 = createObject("zhangsan","123456");
o1.get();
B、构造函数方式定义类
第一种方式:
function Person(username,password){
//new Person时会产生一个对象,this就会指向这个对象,并且会将这个对象返回,因此当new Person时能得到对象
this.name = username;
this.password = password;
this.get = function(){
//多个Person对象就会有多个匿名对象(也就是匿名方法)产生
alert("username: " + this.username + "\npassword:" + this.password);
};
}
var o1 = new Person("zhangsan","123456");
o1.get();
第二种方式:
function get(){
//此时,this指向调用get方法的对象
alert("username: " + this.username + "\npassword:" + this.password);
}
function Person(username,password){
//new Person时会产生一个对象,this就会指向这个对象,并且会将这个对象返回,因此当new Person时能得到对象
this.name = username;
this.password = password;
//不管有几个对象产生,get方法(对象)只产生一个
this.get = get;
}
var o1 = new Person("zhangsan","123456");
o1.get();
C、原型方式创建类:prototype,prototype是每个类或每个对象都具有的属性,可以通过对prototype来实现对类或对象的属性或方法的追加
特点:不管产生多少个实例对象,其追加的方法只产生一次
function Person(){
}
Person.prototype.username = "zhangsan";//Person.prototype.username = new Array();
Person.prototype.password = "123";
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var person = new Person();
var person2 = new Person();
//person.username.push("zhangsan");
person.get();
person2.get();
弊端1:不能通过在new的时候给予不同的初始化值
弊端2:如果prototype中的一个属性的值是一个对象,而不是一个字符串,比如数组,那么当一个实例对象对这个数组进行了操作后,其他的实例对象也会受到影响,因为他们的同一个属性值都是指向了同一个数组对象。
D、混合的构造函数与原型方式:属性采用构造函数方式定义,方法采用原型方式定义
特点1:每个实例对象的属性值互不影响,即同名的属性其值都是指向了不同的数据或对象。
特点2:能够实现每个实例对象在构造时就能传递初始化信息
特点3:每个实例对象共享方法,即每个实例对象的同名方法都是指向同一个匿名方法,即这个匿名方法不会因对象的创建而产生多个,它就只有一个
弊端:类定义中属性和方法定义分开,整体性欠缺
第一个示例:
function(){
this.username = new Array();
this.password = "123";
}
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var p = new Person();
p.username.push("zhangsan");
var p2 = new Person();
p.get();
p2.get();
第二个示例:
function Person(username,password){
this.username = username;
this.password = password;
}
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var p = new Person("zhangsan","123");
var p2 = new Person("lisi","123456");
p.get();
p2.get();
E、动态的原型方式
function Person(){
this.username = "zhangsan";
this.password = "123";
if(typeof Person.flag == "undefined"){
//使得在创建多个对象时,匿名方法只产生一次
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
Person.flag = true;
}
}
var person = new Person();
person.get();
var object = new Object;
var string = new String;
var date = new Date;
当然也可以写成带括号的,如:
var object = new Object();
建议带括号,以符合java模式
以上Object、String、Date等都是内置类,即本地类
2、数组的两种呈现方式:数组类Array及[]
var array = new Array();//array为数组类实例对象,也就是数组
array.push(1);
array.push(2);
array.push(3);
alert(array.length);//结果:3 数组类Array有length属性
var array = [];
array.push(1);
array.push(2);
array.push(3);
var array = [1,2,3];
以上3种情况结果都一样,第3种用的最常见
3、早绑定和晚绑定:js都是晚绑定,java都是早绑定
4、js中类的定义方式:
A、工厂方式定义类
第一种方式:
function createObject(username,password){
var object = new Object();
object.username = username;
object.password = password;
//多个对象就会有多个匿名对象(也就是匿名方法)产生
object.get = function(){
//此时,this指向的是当前对象,即object
alert("username: " + this.username + "\npassword:" + this.password);
};
return object;
}
var o1 = createObject("zhangsan","123456");
o1.get();
第二种方式:
function get(){
//此时,this指向的是调用get方法的对象
alert("username: " + this.username + "\npassword:" + this.password);
}
function createObject(username,password){
var object = new Object();
object.username = username;
object.password = password;
//不管有几个对象产生,get方法(对象)只产生一个
object.get = get;
return object;
}
var o1 = createObject("zhangsan","123456");
o1.get();
B、构造函数方式定义类
第一种方式:
function Person(username,password){
//new Person时会产生一个对象,this就会指向这个对象,并且会将这个对象返回,因此当new Person时能得到对象
this.name = username;
this.password = password;
this.get = function(){
//多个Person对象就会有多个匿名对象(也就是匿名方法)产生
alert("username: " + this.username + "\npassword:" + this.password);
};
}
var o1 = new Person("zhangsan","123456");
o1.get();
第二种方式:
function get(){
//此时,this指向调用get方法的对象
alert("username: " + this.username + "\npassword:" + this.password);
}
function Person(username,password){
//new Person时会产生一个对象,this就会指向这个对象,并且会将这个对象返回,因此当new Person时能得到对象
this.name = username;
this.password = password;
//不管有几个对象产生,get方法(对象)只产生一个
this.get = get;
}
var o1 = new Person("zhangsan","123456");
o1.get();
C、原型方式创建类:prototype,prototype是每个类或每个对象都具有的属性,可以通过对prototype来实现对类或对象的属性或方法的追加
特点:不管产生多少个实例对象,其追加的方法只产生一次
function Person(){
}
Person.prototype.username = "zhangsan";//Person.prototype.username = new Array();
Person.prototype.password = "123";
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var person = new Person();
var person2 = new Person();
//person.username.push("zhangsan");
person.get();
person2.get();
弊端1:不能通过在new的时候给予不同的初始化值
弊端2:如果prototype中的一个属性的值是一个对象,而不是一个字符串,比如数组,那么当一个实例对象对这个数组进行了操作后,其他的实例对象也会受到影响,因为他们的同一个属性值都是指向了同一个数组对象。
D、混合的构造函数与原型方式:属性采用构造函数方式定义,方法采用原型方式定义
特点1:每个实例对象的属性值互不影响,即同名的属性其值都是指向了不同的数据或对象。
特点2:能够实现每个实例对象在构造时就能传递初始化信息
特点3:每个实例对象共享方法,即每个实例对象的同名方法都是指向同一个匿名方法,即这个匿名方法不会因对象的创建而产生多个,它就只有一个
弊端:类定义中属性和方法定义分开,整体性欠缺
第一个示例:
function(){
this.username = new Array();
this.password = "123";
}
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var p = new Person();
p.username.push("zhangsan");
var p2 = new Person();
p.get();
p2.get();
第二个示例:
function Person(username,password){
this.username = username;
this.password = password;
}
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
var p = new Person("zhangsan","123");
var p2 = new Person("lisi","123456");
p.get();
p2.get();
E、动态的原型方式
function Person(){
this.username = "zhangsan";
this.password = "123";
if(typeof Person.flag == "undefined"){
//使得在创建多个对象时,匿名方法只产生一次
Person.prototype.get = function(){
alert("username: " + this.username + "\npassword: " + this.password);
}
Person.flag = true;
}
}
var person = new Person();
person.get();
发表评论
-
教你实现 jQuery 的选择器
2010-12-05 21:08 6520做网站免不了用到JS,如果大量用到选择一个JS框架是个不错的选 ... -
关闭输入框自动完成 firefox msie disable input autocomplete
2010-10-28 10:43 3129English Title:Shut input casing ... -
js中prototype用法
2010-10-20 15:56 1276prototype 是在 IE 4 及其以后版本引入的一个 ... -
jquery source
2010-10-20 15:03 1234http://tech.ddvip.com/2009-01/1 ... -
使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
2010-10-20 14:10 3819HTTP 请求的拦截技术可以广泛地应用在反向代理、拦截 Aja ... -
监听输入框值的即时变
2010-10-20 12:34 1641写道 <html> <head> ... -
判断上传文件的大小
2010-10-19 12:44 1364var Sys = {}; if ... -
js继承的实现
2010-10-19 11:16 1148写道 js继承有5种实现方式: 1、继承第一种方式:对象 ... -
js高级进阶
2010-10-19 11:14 8165写道 1、js不支持函数(方法)的重载 2、js中,一个 ... -
jQuery 简但实现select二级联动
2010-08-23 12:09 4766写道 < !DOCTYPE html PUBLIC ... -
原始的Ajax 直接使用XmlHttpRequest
2010-08-23 11:29 1906写道 //定义XMLHttp实例 var xmlHttp ... -
jquery checkbox,radio ,select value
2010-08-12 10:01 1683写道 .date-region select:visi ... -
jquery flot 使用笔记
2010-06-27 00:57 5811写道 <!DOCTYPE HTML PUBLIC &q ... -
js clone
2010-05-13 13:50 1285<!DOCTYPE html PUBLIC &q ... -
javascript可以轻松操作客户端剪贴板内容
2010-04-19 12:29 1362写道 <html> <head> ... -
dhtml
2010-04-09 10:18 2377写道 Object.__defineGetter__ = ... -
MzTreeView
2010-03-24 16:05 5668写道 MzTreeView 1.0 是数据一次性加载,客户 ... -
JavaScript 节点操作 以及DOMDocument属性和方法
2010-03-24 15:28 16261Attributes 存储节点的属 ... -
在网页里打开本地的驱动器
2010-03-24 12:14 1597<html> <head> < ... -
页面登录进度条
2010-03-24 12:13 1625<form name=loading> < ...
相关推荐
在JavaScript面向对象的上下文中,我们可以创建专门处理Canvas绘图的类,封装复杂的绘图逻辑: ```javascript class Circle { constructor(x, y, radius) { this.x = x; this.y = y; this.radius = radius; } ...
在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...
在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括对象、类、继承、原型链和闭包等概念。 一、对象和类 在JavaScript中,对象是指一个实体,可以拥有自己的属性和方法。对象可以使用工厂函数或构造...
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码...
JS面向对象的基础 写的很好的,大家去看JS面向对象的基础 JS面向对象的基础 写的很好的,大家去看JS面向对象的基础
JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。
### JavaScript面向对象编程精要 #### 一、引言 JavaScript是一种灵活且强大的脚本语言,它虽然起源于一种简单的浏览器脚本语言,但随着时间的发展,JavaScript已经成为了一种功能全面的编程语言,尤其是在Web开发...
总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...
### JavaScript面向对象编程详解 #### 引言 在软件工程领域,面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。每个对象都可以包含数据(属性)和方法(行为)。JavaScript虽然起初并非为面向对象...
### JavaScript面向对象精要 #### 一、概述 《JavaScript面向对象精要》是一本深入讲解JavaScript面向对象编程原理的专业书籍。本书由知名的前端开发者Nicholas C. Zakas撰写,全面介绍了JavaScript作为一种动态...
下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...
JavaScript是一种广泛应用于Web开发的动态编程语言,尤其以其强大的面向对象特性而闻名。面向对象编程(Object-Oriented ...通过阅读`prototype.js`这样的示例代码,可以帮助加深对JavaScript面向对象编程的理解。