- 浏览: 887262 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
JavaScript是一门OOP,而有些人说,JavaScript是基于对象的。
4) 方法
以下例子引用于<<__JavaScript: The Definitive Guide>>
function Rectangle_area( ) { return this.width * this.height; }
function Rectangle_perimeter( ) { return 2*this.width + 2*this.height; }
function Rectangle_set_size(w,h) { this.width = w; this.height = h; }
function Rectangle_enlarge( ) { this.width *= 2; this.height *= 2; }
function Rectangle_shrink( ) { this.width /= 2; this.height /= 2; }
function Rectangle(w, h)
{
this.width = w;
this.height = h;
this.area = Rectangle_area;
this.perimeter = Rectangle_perimeter;
this.set_size = Rectangle_set_size;
this.enlarge = Rectangle_enlarge;
this.shrink = Rectangle_shrink;
}
这种风格可能和Java,c++很不同。方法中的this表示调用它的对象的引用。
5) prototype
prototype是一个对象,每个类都包含一个prototype对象(注意,每个类一个,而不是每个对象一个)。
看看下面的例子:
function User(name)
{
this.name = name
}
User.prototype.name = "killercat" // 类名.prototype.属性(或方法)
user = new User("who"+"<br />")
document.write(user.name)
delete user.name
document.write(user.name)
再看一个例子:
function User(name)
{
}
User.prototype.name = "human"
user1 = new User()
user2 = new User()
document.write(user1.name+"<br />")
document.write(user2.name)
结果:
human
human
说明了,每个类一个prototype对象,而不是每个对象单独一个。
obj.x 这条语句的查找顺序是,先在obj中找x属性,假如没有,再进入obj对应的类中找prototype.x,对于方法来说,也一样。因此,不要出现这样的语句: user.prototype.name = "xxx" 必须是 user.name = "xxx" (prototype对象属于一个类,而不是一个对象)
类名.prototype.属性 // 相当于一个实例变量(属性),对方法也一样
类名.属性 // 相当于一个静态变量(属性),对方法也一样,调用的时候必须使用"类名.属性",不能使用"类对象.属性",因为它属于一个类,而不是一个对象。
例如:
function User(name)
{
this.name = name
}
User.type = "human"
user = new User("kc")
document.write(User.type + "<br />")
document.write(user.type)
结果:
human
undefined
另外,每个prototype都有一个constructor属性,默认用于保存constructor的定义,例如上面的user对象,调用:
user.constructor得到:
function User(name) { this.name = name; }
我们可以通过typeof,知道参数的类型,假如是对象,就返回"object",假如是方法就返回"function"
6) 利用prototype实现类间的继承,例如:
// 父类
function Circle(r){
this.r = r;
}
Circle.PI = 3.14;
Circle.prototype.getArea = function (){
return Circle.PI * this.r * this.r;
};
Circle.prototype.toString = function (){
if(( typeof this == "object") && (this.constructor == Circle)){
return "circle with a radius " + this.r ;
}
else{
return "unknown object";
}
};
Circle.max = function (c1,c2){
return c1.r >= c2.r ? c1 : c2;
};
// 子类
function ColorCircle(r,color){
this.r = r;
this.color = color;
}
ColorCircle.prototype = new Circle(0); // 保存父类的对象
ColorCircle.prototype.constructor = ColorCircle; // 为constructor 改名字
ColorCircle.prototype.toString = function(){
if(( typeof this == "object") && (this.constructor == ColorCircle)){
return this.color+" circle with a radius " + this.r ;
}
else{
return "unknown object";
}
}
ColorCircle.prototype.getColor = function(){
return this.color;
}
ColorCircle.prototype.setColor = function(color){
this.color = color;
}
也就是,使用prototype保存父类的对象,在构造子类的时候,父类对象同时被构造(因为prototype被构造)。也就是JavaScript继承其实就是让子类的prototype对象保存父类的对象。
4) 方法
以下例子引用于<<__JavaScript: The Definitive Guide>>
function Rectangle_area( ) { return this.width * this.height; }
function Rectangle_perimeter( ) { return 2*this.width + 2*this.height; }
function Rectangle_set_size(w,h) { this.width = w; this.height = h; }
function Rectangle_enlarge( ) { this.width *= 2; this.height *= 2; }
function Rectangle_shrink( ) { this.width /= 2; this.height /= 2; }
function Rectangle(w, h)
{
this.width = w;
this.height = h;
this.area = Rectangle_area;
this.perimeter = Rectangle_perimeter;
this.set_size = Rectangle_set_size;
this.enlarge = Rectangle_enlarge;
this.shrink = Rectangle_shrink;
}
这种风格可能和Java,c++很不同。方法中的this表示调用它的对象的引用。
5) prototype
prototype是一个对象,每个类都包含一个prototype对象(注意,每个类一个,而不是每个对象一个)。
看看下面的例子:
function User(name)
{
this.name = name
}
User.prototype.name = "killercat" // 类名.prototype.属性(或方法)
user = new User("who"+"<br />")
document.write(user.name)
delete user.name
document.write(user.name)
再看一个例子:
function User(name)
{
}
User.prototype.name = "human"
user1 = new User()
user2 = new User()
document.write(user1.name+"<br />")
document.write(user2.name)
结果:
human
human
说明了,每个类一个prototype对象,而不是每个对象单独一个。
obj.x 这条语句的查找顺序是,先在obj中找x属性,假如没有,再进入obj对应的类中找prototype.x,对于方法来说,也一样。因此,不要出现这样的语句: user.prototype.name = "xxx" 必须是 user.name = "xxx" (prototype对象属于一个类,而不是一个对象)
类名.prototype.属性 // 相当于一个实例变量(属性),对方法也一样
类名.属性 // 相当于一个静态变量(属性),对方法也一样,调用的时候必须使用"类名.属性",不能使用"类对象.属性",因为它属于一个类,而不是一个对象。
例如:
function User(name)
{
this.name = name
}
User.type = "human"
user = new User("kc")
document.write(User.type + "<br />")
document.write(user.type)
结果:
human
undefined
另外,每个prototype都有一个constructor属性,默认用于保存constructor的定义,例如上面的user对象,调用:
user.constructor得到:
function User(name) { this.name = name; }
我们可以通过typeof,知道参数的类型,假如是对象,就返回"object",假如是方法就返回"function"
6) 利用prototype实现类间的继承,例如:
// 父类
function Circle(r){
this.r = r;
}
Circle.PI = 3.14;
Circle.prototype.getArea = function (){
return Circle.PI * this.r * this.r;
};
Circle.prototype.toString = function (){
if(( typeof this == "object") && (this.constructor == Circle)){
return "circle with a radius " + this.r ;
}
else{
return "unknown object";
}
};
Circle.max = function (c1,c2){
return c1.r >= c2.r ? c1 : c2;
};
// 子类
function ColorCircle(r,color){
this.r = r;
this.color = color;
}
ColorCircle.prototype = new Circle(0); // 保存父类的对象
ColorCircle.prototype.constructor = ColorCircle; // 为constructor 改名字
ColorCircle.prototype.toString = function(){
if(( typeof this == "object") && (this.constructor == ColorCircle)){
return this.color+" circle with a radius " + this.r ;
}
else{
return "unknown object";
}
}
ColorCircle.prototype.getColor = function(){
return this.color;
}
ColorCircle.prototype.setColor = function(color){
this.color = color;
}
也就是,使用prototype保存父类的对象,在构造子类的时候,父类对象同时被构造(因为prototype被构造)。也就是JavaScript继承其实就是让子类的prototype对象保存父类的对象。
发表评论
文章已被作者锁定,不允许评论。
-
HTML特殊字符显示
2011-08-16 21:45 1006有些字符在HTML里有特别的含义,比如小于号<就表示HT ... -
html标签a的target属性的用法
2011-08-02 00:40 10901:如果使用标签<a>来链接到一个页面的话,tar ... -
JavaScript中的函数:函数的apply、call方法和length属性
2011-06-03 13:39 820转:http://www.smallrain.net/stud ... -
JS arguments 属性
2011-06-03 13:38 902arguments 属性 为当前执行的 function 对象 ... -
JS数组方法汇总
2011-03-31 12:18 1038js数组元素的添加和删除一直比较迷惑,抽个时间总结如下:var ... -
选择,分组和引用
2011-03-17 12:59 821正则表达式的语法还包 ... -
javascript 中定义private 方法
2011-03-15 09:49 956出处:http://aoqi1883.blog.163.com ... -
event.returnValue和return false的区别
2011-03-15 09:48 1236<!DOCTYPE html PUBLIC " ... -
JavaScript--execCommand指令集
2011-03-15 09:23 964<HTML> <HEAD> ... -
个性博客-七款超靓天气预报免费代码
2011-03-15 09:12 1012第一种: <iframe src="http: ... -
js判断对象是否是某一类型
2011-03-15 09:05 946<!DOCTYPE html PUBLIC " ... -
常用的DOCUMENT.EXECCOMMAND
2011-03-15 09:04 1047<input type=button value=剪切 ... -
解决IE6中 Div层挡不住Select组件
2011-03-14 09:39 1098/** * 通过使用Ifram,解 ... -
配置文件(fckconfig.js)中主要配置项目如下
2011-02-18 10:59 891FCKConfig.CustomConfigurationsP ... -
[转]疯狂的跨域技术
2011-01-30 15:36 1075JavaScript是一种在Web开发中经常使用的前端动态脚本 ... -
JAVASCRIPT中RegExp.$1是什么意思
2011-01-28 15:02 2195RegExp 是javascript中的一个内置对象。为正则表 ... -
js监听WEB页面关闭事件
2010-12-31 10:54 6396javascript捕获窗口关闭事件有两种方法 onbefor ... -
天气数据调用代码,总结了一下收藏
2010-12-14 12:41 1100转载于:http://blog.csdn.net/ ... -
自动跳转
2010-12-13 15:43 931<meta http-equiv="refre ... -
JavaScript面向对象编程
2010-12-07 23:27 893创建自己的对象 要创 ...
相关推荐
标题中提到的“JavaScript面向对象的简单入门介绍”,说明这是一篇面向初学者的文章,旨在帮助读者理解JavaScript中的面向对象编程(OOP)基础概念。JavaScript是一种多范式编程语言,它支持面向对象、命令式、声明...
- **第二章:面向对象编程简介**:解释OOP的基本概念和原则。 - **第三章:JavaScript中的类和对象**:详细介绍如何使用JavaScript创建类和对象。 - **第四章:继承**:探讨JavaScript中实现继承的不同方式。 - **第...
从所提供的文件信息中,我们可以总结以下几点与“JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf”相关的重要知识点。 首先,该文件提到的书籍是关于JavaScript面向对象编程的,面向对象编程...
JavaScript的面向对象编程是其强大的特性之一,它主要围绕三个核心概念:封装、继承和多态。在这篇文章中,我们将深入探讨这些概念,并通过代码示例来理解它们在JavaScript中的应用。 **封装**是面向对象编程的基础...
### JavaScript 快速入门教程与面向对象编程 #### 一、概要 JavaScript 是一种广泛应用于网页开发中的脚本语言,具有轻量级、解释型等特点。它可以在客户端执行,无需服务器支持,使得网页能够更加动态和交互。 ##...
在“JavaScript从入门到精通(第2版)PPT”这套教学资料中,我们将深入探讨JavaScript的核心概念、语法特性以及实际应用。 1. **基础概念** - **变量与数据类型**:JavaScript支持基本数据类型(如字符串、数字、...
这本书通俗易懂,非常适合0基础入门,不仅教会你知识,还教会你学习的方法,语言非常的亲切,就像一个智者在言传身教一样。本电子书是PDF高清版,看着很舒服。
这本书《JavaScript从入门到精通(第2版)》,作者Steve Suehring,提供了全面深入的JavaScript学习指导。第二版通常意味着更新了最新的技术信息,以适应不断发展的Web开发环境,比如ES6(ECMAScript 2015)及后续...
本书《JavaScript从入门到精通(第2版)》由Steve Suehring撰写,专为想要深入理解并掌握JavaScript的初学者和进阶者设计。它涵盖了JavaScript的基础概念、语法特性以及高级应用,旨在帮助读者构建坚实的JavaScript...
"JavaScript从入门到精通(第2版)" 是一本适合初学者的教程,它详细介绍了JavaScript的基本语法和概念,如变量、数据类型、控制流、函数、对象和数组等。此外,它还涵盖了DOM操作、事件处理、AJAX异步通信以及面向...
本书《JavaScript从入门到精通(第2版)》旨在帮助初学者和有经验的开发者深入理解和掌握这门语言,从而提升技能水平。通过阅读本书和实践其中的源代码实例,读者将能够全面了解JavaScript的核心概念和技术。 首先...
2. **基于对象**:JavaScript允许开发者操作和创建对象,但与面向对象语言(如Java)不同,JavaScript是基于对象而不是完全面向对象的,这意味着它不强制使用类来创建对象。 3. **简单性**:JavaScript语法简洁,...
你可以创建自定义对象,使用构造函数和原型链实现面向对象编程。另外,JavaScript还支持闭包,这是一种强大的特性,可以用来封装变量和保护隐私。 在进阶内容中,你将接触到异步编程,如回调函数、Promise和async/...
总的来说,《JavaScript程序设计基础教程(第2版)_PPT》涵盖了JavaScript的基础语法、核心概念、面向对象编程以及最新特性的介绍,是初学者入门和进阶的理想资料。通过深入学习,你可以掌握创建动态网页和网络应用所...
通过这个"JavaScript入门教程",初学者将能够建立起坚实的JavaScript基础,掌握其基本语法、面向对象特性以及常用的内置对象,为进一步学习高级概念和框架如React、Vue、Angular等打下坚实的基础。不断实践和深入...
1. 类与模块:ES6引入了类的概念,使得面向对象编程更加简洁。同时,模块系统允许代码按需导入和导出,提高了代码组织和重用性。 2. 解构赋值:可以从数组或对象中提取值并赋给变量,简化了代码。 3. 扩展运算符与...