深入剖析JavaScript编程中的对象概念


Posted in Javascript onOctober 21, 2015

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...
此外,JavaScript 允许自定义对象。
所有事物都是对象
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

  • 布尔型可以是一个对象
  • 数字型可以是一个对象
  • 字符串也可以是一个对象
  • 日期是一个对象
  • 数学和正则表达式也是对象
  • 数组是一个对象
  • 甚至函数也可以是对象

JavaScript 对象

对象只是一种特殊的数据。对象拥有属性和方法。
访问对象的属性
属性是与对象相关的值。
访问对象属性的语法是:

objectName.propertyName

这个例子使用了 String 对象的 length 属性来获得字符串的长度:

var message="Hello World!";
var x=message.length;

在以上代码执行后,x 的值将是:

12

访问对象的方法
方法是能够在对象上执行的动作。
您可以通过以下语法来调用方法:

objectName.methodName()

这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message="Hello world!";
var x=message.toUpperCase();

在以上代码执行后,x 的值将是:

HELLO WORLD!

创建 JavaScript 对象
通过 JavaScript,您能够定义并创建自己的对象。
创建新对象有两种不同的方法:

  1. 定义并创建对象的实例
  2. 使用函数来定义对象,然后创建新的对象实例

创建直接的实例
这个例子创建了对象的一个新实例,并向其添加了四个属性:
实例

person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";

替代语法(使用对象 literals):
实例

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

使用对象构造器
本例使用函数来构造对象:
实例

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}

在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)
创建 JavaScript 对象实例
一旦您有了对象构造器,就可以创建新的对象实例,就像这样:

var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");

把属性添加到 JavaScript 对象
您可以通过为对象赋值,向已有对象添加新属性:
假设 personObj 已存在 - 您可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:

person.firstname="John";
person.lastname="Doe";
person.age=30;
person.eyecolor="blue";

x=person.firstname;

T在以上代码执行后,x 的值将是:

John

把方法添加到 JavaScript 对象
方法只不过是附加在对象上的函数。
在构造器函数内部定义对象的方法:

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}

changeName() 函数 name 的值赋给 person 的 lastname 属性。
现在您可以试一下:

myMother.changeName("Doe");
Javascript 相关文章推荐
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
jquery可见性过滤选择器使用示例
Jun 24 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
jQuery三级下拉列表导航菜单代码分享
Apr 15 Javascript
浅谈js中对象的使用
Aug 11 Javascript
javaScript封装的各种写法
Aug 14 Javascript
代码详解Vuejs响应式原理
Dec 20 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
谈谈React中的Render Props模式
Dec 06 Javascript
mock.js模拟前后台交互
Jul 25 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 Javascript
vue下载二进制流图片操作
Oct 26 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 #Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 #Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 #Javascript
JavaScript操作HTML元素和样式的方法详解
Oct 21 #Javascript
13个PHP函数超实用
Oct 21 #Javascript
JavaScript对HTML DOM使用EventListener进行操作
Oct 21 #Javascript
JavaScript对象数组的排序处理方法
Oct 21 #Javascript
You might like
短波的认识
2021/03/01 无线电
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
yii数据库的查询方法
2015/12/28 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python实现flappy bird游戏
2018/12/24 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
数控技术应届生求职信
2013/11/13 职场文书
挂科检讨书范文
2014/02/20 职场文书
初中军训感想300字
2014/03/05 职场文书
软件测试专业推荐信
2014/09/18 职场文书
企业文化学习心得体会
2016/01/21 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
Python实现位图分割的效果
2021/11/20 Python
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏