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 相关文章推荐
根据分辩率调用不同的CSS.
Jan 08 Javascript
javascript dom代码应用 简单的相册[firefox only]
Jun 12 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
如何使Chrome控制台支持多行js模式——意外发现
Jun 13 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
Nov 18 Javascript
全面理解闭包机制
Jul 11 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
JS在浏览器中解析Base64编码图像
Feb 09 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
js实现数字滚动特效
Dec 16 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
一个php作的文本留言本的例子(六)
2006/10/09 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
AJAX架构之Dojo篇
2007/04/10 Javascript
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
python求crc32值的方法
2014/10/05 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
深入理解Python3 内置函数大全
2017/11/23 Python
python使用插值法画出平滑曲线
2018/12/15 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python能开发游戏吗
2020/06/11 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
产品销售员岗位职责
2013/12/18 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
中学生家长评语大全
2014/04/16 职场文书
学校运动会霸气口号
2014/06/07 职场文书
三人合伙协议书范本
2014/10/29 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js