javascript 面向对象编程 万物皆对象


Posted in Javascript onSeptember 17, 2009

javascript和java、C#等语言一样也具有面向对象的一些特征,但细比较的时候,会发现这些特征并不是真正的面向对象,很多地方都是利用对象本身来模拟面向对象,所以认为javascript不能算是面向对象编程语言,而是基于对象的语言。
在javascript中真的是万物皆对象,new出来的东西是对象,方法是对象,连类也都是对象。下面分别来看一下对象、方法和类的对象特征。
1.拿内置的Date来看一下吧

var time = new Date(); 
var timeString = time.getFullYear() + "-" + 
time.getMonth() + "-" + 
time.getDate() + " " + 
time.getHours() + ":" + 
time.getMinutes() + ":" + 
time.getSeconds(); 
document.write(timeString);

通过 time来操作其所引用的Date对象,可以方便的调用Date的对象所包含的一系列getXX()方法来获取年月日时分秒等信息。
可以再看一下String
var username = new String("hello world"); 
document.write(username.length);

变量username引用了new出来的字符串对象,通过username访问字符串对象的length属性。
2.方法也是对象
function hello() { 
alert("hello"); 
}; 
var helloRef = hello; 
helloRef();

hello是一个方法,helloRef是一个引用了hello方法的变量,helloRef和hello一样都指向了相同的方法对象。也就意味着helloRef也可以执行,helloRef()。同理也可以写出以下代码。
var helloRef = function() { 
alert("hello"); 
}; 
helloRef();

function(){alert(“hello”)}是一个匿名方法,当然也是对象,用helloRef变量引用该方法对象后,可以通过helloRef来调用方法。
3.那么类呢?当然类也是对象,在javascript中,不像C#或java那样有class关键字用来创建类,而是直接使用方法的关键字来创建类或者叫模拟类。
function Person(username, age) { 
this.Name = username; 
this.Age = age; 
this.Introduce = function() { 
alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
}; 
}; 
var person1 = new Person("张三", 20); 
person1.Introduce();

以上创建了一个Person类型,Person带有构造参数username和age,通过创建的Person对象可以调用Person所包含的方法Introduce。下面对代码做一些修改。
function Person(username, age) { 
this.Name = username; 
this.Age = age; 
this.Introduce = function() { 
alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
}; 
}; 
var PersonClass = Person; 
var person1 = new PersonClass("张三", 20); 
person1.Introduce();

重新声明新的变量PersonClass并引用Person类,PersonClass和Person都指向了原来的Person所引用的类,所以也可以用PersonClass来创建对象。
以上的几个例子可能不是很恰当,但也可以一窥javascript中万物皆对象。
下一节详细的谈一谈javascript中的对象。
Javascript 相关文章推荐
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
jQuery源码分析之Event事件分析
Jun 07 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
Apr 02 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
基于javascript编写简单日历
May 02 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
Vue SSR 组件加载问题
May 02 Javascript
Vue实现导航栏的显示开关控制
Nov 01 Javascript
javascript 面向对象编程 function也是类
Sep 17 #Javascript
类似CSDN图片切换效果脚本
Sep 17 #Javascript
var与Javascript变量隐式声明
Sep 17 #Javascript
html数组字符串拼接的最快方法
Sep 16 #Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 #Javascript
javascript 检测浏览器类型和版本的代码
Sep 15 #Javascript
不安全的常用的js写法
Sep 15 #Javascript
You might like
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
深入探讨前端框架react
2015/12/09 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
js闭包学习心得总结
2018/04/17 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python获取图片颜色信息的方法
2015/03/18 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
浅析python的Lambda表达式
2019/02/27 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python中的&&及||的实现示例
2019/08/07 Python
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
社团2014年植树节活动总结
2014/03/11 职场文书
会计求职自荐信
2014/06/20 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
学生病假条范文
2015/08/17 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
css3 选择器
2022/05/11 HTML / CSS