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 09 Javascript
javascript中的prototype属性实例分析说明
Aug 09 Javascript
用jquery实现的一个超级简单的下拉菜单
May 18 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
详谈javascript中DOM的基本属性
Feb 26 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
快速使用Bootstrap搭建传送带
May 06 Javascript
JS本地刷新返回上一页代码
Jul 25 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
vue slot与传参实例代码讲解
Apr 28 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
php与java通过socket通信的实现代码
2013/10/21 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
JavaScript运算符小结
2015/06/03 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
在Python中关于中文编码问题的处理建议
2015/04/08 Python
python 容器总结整理
2017/04/04 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
化学教师教学反思
2014/01/17 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
初中班主任工作随笔
2015/08/15 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL