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 相关文章推荐
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
Oct 24 Javascript
深入分析下javascript中的[]()+!
Jul 07 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
JS模拟Dialog弹出浮动框效果代码
Oct 16 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
Mar 09 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 Javascript
js中的深浅拷贝问题简析
May 10 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 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中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Python实现抓取网页并且解析的实例
2014/09/20 Python
python实现给字典添加条目的方法
2014/09/25 Python
Python实现的建造者模式示例
2018/08/06 Python
python实现桌面壁纸切换功能
2019/01/21 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
django API 中接口的互相调用实例
2020/04/01 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
通信工程毕业生求职信
2013/11/16 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
给老师的一封建议书
2014/03/13 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
政风行风评议心得体会
2014/10/21 职场文书
初中毕业生自我评价
2015/03/02 职场文书
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android