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入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
js 居中漂浮广告
Mar 21 Javascript
JQuery 选择器 xpath 语法应用
May 13 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
DIV菜单层实现代码
Nov 19 Javascript
JS字符串拼接在ie中都报错的解决方法
Mar 27 Javascript
详解JS中的立即执行函数
Feb 24 Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 Javascript
浅析java线程中断的办法
Jul 29 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
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
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
XmlUtils JS操作XML工具类
2009/10/01 Javascript
Script的加载方法小结
2011/01/12 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python源文件的字符编码知识点详解
2021/03/04 Python
医院护士的求职信范文
2013/12/26 职场文书
培训自我鉴定
2014/01/31 职场文书
护士的自我鉴定
2014/02/07 职场文书
求职信内容怎么写
2014/05/26 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
个人培训总结
2015/03/05 职场文书
升职自我推荐信范文
2015/03/25 职场文书
酒店宣传语大全
2015/07/13 职场文书
校运会广播稿
2015/08/19 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL