在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等。

在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友)。

夫妻间呢?都会说我的爱人是谁谁谁,现在我们应知道什么是对象了吧。

有一句谚语:万物皆对象,在我们开发者眼中,程序是反应现实生活的。那我们如何在javaScript中写脚本进行反馈生活需求信息呢?

在我们javaScript的函数中定义多个属性和函数就是一个javaScript对象。

理念概念中的定义:面向对象(object-oriented,oo)的语言有一个标志,那就是它们都有类的概念。

但javaScript中是没有类的概念只有函数的概念,我们一般会通过一个函数来模拟一个类。

在生活中我们的面向对象是由属性和行为构成的。如:你的性别-男(这就是属性),我在工作(这是行为)。

在程序中我们通过类可以任意地创建多个属性和函数。

在ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或函数”。

下面我一起来看下示例吧!看看是怎么创建对象的、如何访问对象属性和对象函数(方法;java中的函数术语)的。

对象定义:

javaScript中的所有事物都是对象:字符串、数值、数组、函数…

此外,javaScript允许自定义对象

所有事物都是对象

javaScript提供多个内建对象,比如String、Date 、Array等等。对象只是带有属性和方法的特殊数据类型。

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

  var cars = {

    name:"Flat",

    model:500,

    weight:850kg,

    color:white

  }

//变量是cars这个对象的容器

对象属性:

可以说“javaScript对象是键值对的容器”。

但是,我们通常认为"javaScript对象是键值对的容器"。

键值对通常写法为name:value(键与值以冒号分割)。

键值对在javaScript对象通常称为对象属性。

访问对象属性:

你可以通过两种方式访问对象属性:

  实例1:

  person.lastName;

  实例2:

  person["lastName"];

对象方法:

  对象的方法定义了一个函数,并作为对象的属性存储。

  对象方法通过添加()调用(作为一个函数)。

  该实例访问了person对象的fullName()方法:

  实例:

  name = person.fullName();

  如果你要访问person对象的fullName属性,它将作为一个定义函数的字符串返回:

  name = person.fullName;

  javaScript对象是属性和方法的容器。

访问对象方法:

  你可以使用以下语法创建对象方法:

  methodName: function () {code lines}

  你可以使用以下语法访问对象方法:

  objectName.methodName()

  通常fullName()是作为person对象的一个方法,fullName是作为一个属性。

  有多种方式可以创建,使用和修改属性和方法。

使用对象构造器:

构造器的意思是:创建了一个什么的,如:属性、函数等。

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

  实例

  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;

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

  john

把方法添加到javaScript对象

  方法只不过是附加在对象上的函数。

  在构造器函数内部定义对象的方法:

  function person (firstName,lastName,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是面向对象的语言,但javaScript不使用类。

  在JavaScript中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。

  javaScript基于prototype(原型),而不是基于类的。

如何理解javaScript对象?的更多相关文章

  1. 理解JavaScript对象

    理解JavaScript对象 对象是JavaScript的基本数据类型.对象是一种复合值:将很多值(原始值或者其他对象)聚合在一起. JavaScript对象不仅可以保持自有的属性,还可以从原型对象继 ...

  2. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  3. 理解javascript 对象,原型对象、闭包

    javascript作为一个面向对象的语言,理解 对象.原型.闭包.模块模式等技术点对于成为一名合格的javascript程序员相当重要,多年没写过blog,今天就先拋个玉,在下基本也不做前端,但颇感 ...

  4. JavaScript大杂烩3 - 理解JavaScript对象的封装性

    JavaScript是面向对象的 JavaScript是一种基于对象的语言,你遇到的所有东西,包括字符串,数字,数组,函数等等,都是对象. 面向过程还是面向对象? JavaScript同时兼有的面向过 ...

  5. 深入理解javascript对象系列第三篇——神秘的属性描述符

    × 目录 [1]类型 [2]方法 [3]详述[4]状态 前面的话 对于操作系统中的文件,我们可以驾轻就熟将其设置为只读.隐藏.系统文件或普通文件.于对象来说,属性描述符提供类似的功能,用来描述对象的值 ...

  6. 深入理解javascript对象系列第一篇——初识对象

    × 目录 [1]定义 [2]创建 [3]组成[4]引用[5]方法 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初 ...

  7. 理解 JavaScript 对象原型、原型链如何工作、如何向 prototype 属性添加新的方法。

    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...

  8. JavaScript大杂烩4 - 理解JavaScript对象的继承机制

    JavaScript是单根的完全面向对象的语言 JavaScript是单根的面向对象语言,它只有单一的根Object,所有的其他对象都是直接或者间接的从Object对象继承.而在JavaScript的 ...

  9. 理解Javascript的动态语言特性

    原文:理解Javascript的动态语言特性 理解Javascript的动态语言特性 Javascript是一种解释性语言,而并非编译性,它不能编译成二进制文件. 理解动态执行与闭包的概念 动态执行: ...

随机推荐

  1. SQL Server数据库损坏、检测以及简单的修复办法

    简介     在一个理想的世界中,不会存在任何数据库的损坏,就像我们不会将一些严重意外情况列入我们生活中的日常一样,而一旦这类事情发生,一定会对我们的生活造成非常显著的影响,在SQL Server中也 ...

  2. CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总

    CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总 开始 总的来说,OpenGL应用开发者会遇到为如下三种数据创建Vertex Buffer Object的情形: ...

  3. HTML5网页录音和压缩,边猜边做..(附源码)

    宣传一下自己的qq群: (暗号:C#交流) 欢迎喜欢C#,热爱C#,正在学习C#,准备学习C#的朋友来这里互相学习交流,共同进步 群刚建,人不多,但是都是真正热爱C#的 我也是热爱C#的 希望大家可以 ...

  4. 在PC上测试移动端网站和模拟手机浏览器的5大方

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  5. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  6. JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]

    1.$和jquery在全局命名空间中定义的唯一两个变量.   2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象.   3.jquery的四种调用方式:     <1>传递C ...

  7. Python标准模块--itertools

    1 模块简介 Python提供了itertools模块,可以创建属于自己的迭代器.itertools提供的工具快速并且节约内存.开发者可以使用这些工具创建属于自己特定的迭代器,这些特定的迭代器可以用于 ...

  8. 设计模式(八): 从“小弟”中来类比"外观模式"(Facade Pattern)

    在此先容我拿“小弟”这个词来扯一下淡.什么是小弟呢,所谓小弟就是可以帮你做一些琐碎的事情,在此我们就拿“小弟”来类比“外观模式”.在上面一篇博文我们完整的介绍了“适配器模式”,接下来我们将要在这篇博客 ...

  9. c 进程和系统调用

    这一篇博客讲解进程和系统调用相关的知识 有这样一个场景,我需要输入一串文字,然后把我输入的文字加上一个本地的时间戳 保存在一个文件中,可以初步理解为一个备忘录也行 #include <stdio ...

  10. 灵活可扩展的工作流管理平台Airflow

    1. 引言 Airflow是Airbnb开源的一个用Python写就的工作流管理平台(workflow management platform).在前一篇文章中,介绍了如何用Crontab管理数据流, ...