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 去字符串空格终极版(支持utf8)
Nov 14 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
Mar 09 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
jquery添加div实现消息聊天框
Feb 08 jQuery
详解Vue3中对VDOM的改进
Apr 23 Javascript
javascript中layim之查找好友查找群组
Feb 06 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 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
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
浅谈php扩展imagick
2014/06/02 PHP
php计算一个文件大小的方法
2015/03/30 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
浅谈Python中函数的参数传递
2016/06/21 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Django 多环境配置详解
2019/05/14 Python
python实现猜数字游戏
2020/03/25 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
C语言编程题
2015/03/09 面试题
求职推荐信
2013/10/28 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
先进员工事迹材料
2014/12/20 职场文书
焦裕禄观后感
2015/06/03 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
golang 实现两个结构体复制字段
2021/04/28 Golang