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 函数速查表
Feb 07 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 Javascript
javascript的tab切换原理与效果实现方法
Jan 10 Javascript
jQuery表单域属性过滤器用法分析
Feb 10 Javascript
使用Jquery实现每日签到功能
Apr 03 Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 Javascript
打造自己的jQuery插件入门教程
Sep 23 Javascript
ES6新特征数字、数组、字符串
Oct 01 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
解决IE7中使用jQuery动态操作name问题
Aug 28 jQuery
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
浅析Python 责任链设计模式
2020/09/11 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
法律进机关实施方案
2014/03/12 职场文书
新春寄语大全
2014/04/09 职场文书
学风建设演讲稿
2014/09/12 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
亮剑观后感300字
2015/06/05 职场文书
董事长新年致辞
2015/07/29 职场文书
升学宴祝酒词
2015/08/11 职场文书
2019军训心得体会
2019/06/27 职场文书
如何用python绘制雷达图
2021/04/24 Python