一. 对象是什么

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

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. Strust2的json插件

    以下这段摘自网上: Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的ActionResultType .一旦为Action指定了该结果处理类型,JSON插件就会自动将Actio ...

  2. PL/SQL developer export/import (转)

    export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export ...

  3. 基于百度定位SDK的定位服务的实现

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/10179013 一.定位模块的需求:我们想知道使用我们应用的用户的大概位置,每隔五分钟 ...

  4. 【数论】FOJ 2238 Daxia & Wzc's problem

    题目链接: http://acm.fzu.edu.cn/problem.php?pid=2238 题目大意: 已知等差数列A(0)的首项a和公差d,求出数列A(0)前n项和,得到新数列A(1);以此类 ...

  5. Implement Stack using Queues ——LeetCode

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  6. Android从网络中获取xml文件并解析数据

    public class XmlwebData { @SuppressLint("UseValueOf") public static List<Person> get ...

  7. 【OSGi】OSGi生命周期

    1 生命周期管理 对于非模块化应用,生命周期将应用作为一个整体来操作: 而对于模块化应用,则可以以细粒度的方式来管理应用的某一个独立部分. OSGi生命周期管理 OSGi生命周期层有两种不同的作用: ...

  8. [置顶] 【Git入门之十五】Github操作指南

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374633 最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了 ...

  9. PL/SQL Developer 与tnsnames.ora

    PL/SQL Developer 是一款流行的oracle开发与管理的IDE. 在登录PL/SQL Developer时所选择的数据库依赖于tnsnames.ora文件中的信息. 如果我们安装了多个o ...

  10. AngularJS $on $broadcast $emit

    如何在作用域之间通信呢?    1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信.    2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的 ...