一. 对象是什么

是单身童鞋们正在查找的“对象”吗?是的,他/她就是活生生的对象。

Javascript是一种基于对象的语言, 你遇到的所有东西几乎都是对象。

但它又不同于基于类的语言。那么“类”又是神马,简单来说,类就是对同一类事物抽象的称呼。

比如“人”就是一个抽象的称呼,那么你,我,他,就是一个具体的‘人’对象。

那么“抽象”又是神马,抽象就是抽出事物的本质特性而暂时不考虑它们的细节。

抽象是人类在认识复杂现象中使用的最强有力的思维工具。抽象的目的是为了更好的具体!

二. 对象有什么

对象通常有属性和方法。

属性表示对象的静态特征,方法表示对象的动态行为。

比如人有“姓名”、“年龄”等属性,也有“吃饭”、“行走”等方法。

属性和方法又可统称为对象的“成员”,在javascript里统称为“属性”。

也就是可以把“方法”看作一种特殊的“属性”。

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

我们可以把javascript中的对象看成一组键值对,其中“键”就是属性的名称,“值”就是属性的值。

此外,对象还有生命周期,如同人要经历生老病死一样。

下面看个最简单的JS对象:

var person = {

  name: 'cnblog',

  score: 100,

  eat: function() {},

  walk: function() {}

};

三. 对象做什么

对象做什么的前提,当然是对象有什么,对象只能做它能力范围内的事。

通常一件简单的事情,一个对象自己就可以搞定。

当需要处理复杂的事情时,就需要多个对象之间相互协作才能完成。

既然要协作,那么必然要涉及对象之间如何沟通。

对象之间有什么关系,怎样发生关系等等。

当然这些问题,每种编程语言的设计者都给出了对应的解决方案。

我们的任务就是学会灵活使用它们,避免不必要的踩坑。

四. JS创建对象

js创建对象有以下几种方式:

(1). 使用对象字面量:

var person = {
name: 'cnblog',
score: 100
}

(2). 使用Object:

var person = new Object();
person.name = 'cnblog';
person.score = 100;

(3). 使用函数构造器:

function Person(name, score) {
this.name = name;
this.score = score
}
var person = new Person('cnblog', 100);

其实使用Object类型创建对象,本质上也是使用函数构造器来创建的,因为Object也是函数构造器:

typeof Object    // "function"

(4). 使用Object.create:

var person = Object.create(Object.prototype, {
name: { writable:true, configurable:true, value: "cnblog" },
score: { writable:true, configurable:true, value: 100 }
});

Object.create()是ES5新增的API,用于创建一个拥有指定原型和若干个指定属性的对象。

五. JS内置对象

javascript内置对象是指独立于宿主环境的 ECMAScript 实现提供的对象。

常见的内置对象有:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、Math。

JavaScript那些事儿(01): 对象的更多相关文章

  1. 转:JavaScript中函数与对象的关系

    来自:http://www.nowamagic.net/javascript/js_RelationOfFunctionAndObject.php 在ajax兴起以前,很多人写JavaScript可以 ...

  2. JavaScript中的window对象

    JavaScript中的window对象:http://www.cnblogs.com/kissdodog/archive/2013/01/01/2841464.html

  3. JavaScript进阶系列01,函数的声明,函数参数,函数闭包

    本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...

  4. javascript 构造函数方式定义对象 (转载)

    javascript 构造函数方式定义对象   javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> & ...

  5. JavaScript基础第01天笔记

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  6. javascript json字符串与对象相互转换

    在实际项目中,经常遇到字符格式的问题,记下来以便日后方便查看.用到两个函数:JSON.stringify() 和 JSON.parse(). 使用ajax向后台请求数据,后台给前端返回数据,明明后端脚 ...

  7. javascript的window.ActiveXObject对象,区别浏览器的方法

    (window.ActiveXObject)的作用,用来判断浏览器是否支持ActiveX控件,如果支持ActiveX控件,我们可以利用var xml=new ActiveXObject("M ...

  8. Javascript初学篇章_5(对象)

    对象 Javascript是一种面向对象的语言,因此可以使用面向对象的思想来进行javascript程序设计对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体.举个例子,一只猫是个对象, ...

  9. javascript event(事件对象)详解

    javascript event(事件对象)详解   1. 事件对象     1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什 ...

随机推荐

  1. 一点BPXA的思考

    懂的人自然懂... BPXA功能配置 这个概念现在还有印象,记录下来: 一,BPXA是用于BP使用第三方资源的.如使用ORACLE数据库,就是在XA里配置.它的特征是以<xa>开头 二,B ...

  2. tomcat服务器报Server at localhost was unable to start within 45 seconds的问题

    今天在同一个tomcat服务器下部署了2个不同的应用程序,然后启动时报错:Server at localhost was unable to start within 45 seconds.If th ...

  3. AES加密跨平台出现的问题

    javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.S ...

  4. Boolean类源码分析

    Boolean类里面的常量: Boolean.TRUE:这个是调用Boolean的构造函数,新建了一个Boolean对象,所以TRUE是Boolean类型的.用来避免每次都创建新的Boolean对象, ...

  5. android之apk自动更新解析包失败问题

    在apk自动更新(相关问题可以看我的博客http://blog.csdn.net/caicongyang) 从服务器下载完成后,点击notification提示安装时,每次都报解析包失败错误!首先我想 ...

  6. redis数据过期策略【转】

    key的过期时间通常,Redis key被创建时不会自动关联过期时间,key将长久存在,除非通过DEL等命令显示的删除.EXPIRE命令簇可以为指定的key关联一个过期时间,代价是一点额外的内存开销. ...

  7. Light OJ 1030 - Discovering Gold

    题目大意: 给你一个1*N的方格,你初始位置是在1,给你一个骰子,假设你现在的位置是X,你投掷一个骰子掷的点数是y, 那么你的新位置就是 X+y, 并且你可以得到新位置的宝藏.假如X+y > N ...

  8. osg

    智能指针使用: osg::Geode* geode=new osg::Geode;//新建Geode指针 osg::ref_ptr<osg::Geode>geodePtr=geode;// ...

  9. 饭卡 (背包01 一维数组) http://acm.hdu.edu.cn/showproblem.php?pid=2546

    /* 从一组数据中选出n个数,使这n个数的和最接近一个值x, 背包问题, 从一系列菜中,从最贵的菜(MAX)之外中选出几个菜,使菜的总价格sum最接近money-5:money-sum-MAX; 钱数 ...

  10. HDU 4751 Divide Groups 2013 ACM/ICPC Asia Regional Nanjing Online

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 题目大意:判断一堆人能否分成两组,组内人都互相认识. 解题思路:如果两个人不是相互认识,该两人之 ...