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 相关文章推荐
javascript 短路法代码精简
Aug 20 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
js同源策略详解
May 21 Javascript
AngularJs基本特性解析(一)
Jul 21 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
Jan 11 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 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
桌面中心(四)数据显示
2006/10/09 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
php去除重复字的实现代码
2011/09/16 PHP
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python生成随机验证码的两种方法
2015/12/22 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
C语言如何决定使用那种整数类型
2016/11/26 面试题
大学生标准推荐信范文
2013/11/25 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
统计员岗位职责
2015/02/11 职场文书
小学教师求职信范文
2015/03/20 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
家庭经济困难证明
2015/06/23 职场文书
辅导员学期工作总结
2015/08/14 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers