一.什么是对象

对象:

  1. JavaScript的一种基本数据类型
  2. 对象是属性的无序集合,每个属性都是一个名/值对
  3. JavaScript中的事物都是对象:字符串、数值、数组、函数...
  4. JavaScript对象是动态的,在于它可以新增删除属性
  5. JavaScript提供多个内置对象,比如String、Date、Array等

对象最常见的用法是创建(create)、设置(set)、查找(query)、删除(delete)、检测(test)和枚举(enumerate)它的属性。

对象的属性包含名字和值,除此之外,每个属性还有一个与之相关的值,称为“属性特性”:

  1. configurable attribute(可配置):表明能否使用delete操作符删除从而重新定义,或能否修改为访问器属性,默认为true
  2. Enumerable attribute(可枚举):表明是否可以通过for-in循环返回该属性,默认true
  3. writable attribute(可写):表明是否可以设置该属性的值,默认true

 

三类JavaScript对象和两类属性:

  1. 内置对象(native object):由ECMAScript规范定义的对象或类。比如String、Date、Array等
  2. 宿主对象(host object):是由JavaScript解释器所嵌入的宿主环境(比如web浏览器)定义的。客户端JavaScript中表示网页结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当成普通的JavaScript函数对象,那么宿主对象也可以当成普通的内置对象
  3. 自定义对象(user-defined object):由运行中的JavaScript代码创建
  4. 自有属性(own property):直接在对象中定义的属性
  5. 继承属性(inherited property):在对象原型对象中定义的属性

二:创建对象

第一种:对象直接量方式创建

最就简单的方式,在JavaScript代码中使用对象直接量(比较清楚的查找对象包含的属性及方法)

var person = {

    name: {                    //这个属性的值是一个对象

        firstName: "David",

        surName: "Flanagan"

    },

    age: 18,

    getName: function(){          //这个属性值为一个函数

        reutrn this.name;

    }

};

对象直接量是一个表达式,这个表达式每次运算都创建并初始化一个新的对象。每次计算对象直接量的时候,都会计算它的每个属性的值。也就是说,如果一个重复调用的的函数体内使用了对象直接量,它将创建很多新对象,并且每次创建的对象的属性值也有可能不同。

第二种:通过new创建对象

new运算符创建并初始化一个新对象。关键字new后跟随着一个函数调用。这里的函数称作构造函数。

var o = new Object();  //创建一个空对象,和{ }一样

var a = new Array();   //创建一个空数组,和[ ]一样

var d = new Date();   //创建一个表示当前时间的Date对象

var r = new RegExp(‘js’);   //创建一个可以进行模式匹配的RegExp对象

还可以使用自定义的构造函数来初始化新对象。

function Person(){

    this.name = "zhangsan";

    this.age = 18;

    this.getInfo = function(){

        alert(this.name + ", " + this.age);

    }

}

var p1 = new Person();

p1.getInfo();

第三种:原型模式创建

每一个JavaScript对象都和另一个对象相关联(除null),也就是我们所说的原型,每一个对象都从原型继承属性。

通过JavaScript代码Object.Prototype获得对原型的引用

function Person(){}

Person.prototype.name = "zhangsan";

Person.prototype.age= 16;

Person.prototype.getInfo = function(){

    alert(this.name + ", " + this.age);

}

第四种:Object.create()

ECMAScript定义了一个名为Object.create()的方法,它创建了一个新对象,其中第一个参数就是这个对象的原型。Object.create()提供第二个可选参数,用以对对象属性的进一步描述

Object.create(proto[,props]);
function Person(myName,myAge){

   this.name=myName;

   this.age=myAge;

}

Person.prototype.getInfo=function(){

     return("嗨!我的名字是"+this.name+",我现在"+this.age+"岁了!");

}

var tom=Object.create(Person.prototype,{name:{writable:false,value:"Tom"},age:{value:22}});

document.write(tom.showInfo());//返回嗨!我的名字是Tom,我现在22岁

javaScript对象学习笔记(一)的更多相关文章

  1. javaScript 对象学习笔记

    javaScript 对象学习笔记 关于对象,这对我们软件工程到学生来说是不陌生的. 因为这个内容是在过年学到,事儿多,断断续续,总感觉有一丝不顺畅,但总结还是要写一下的 JavaScript 对象 ...

  2. javascript正则表达式 - 学习笔记

    JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...

  3. JavaScript正则表达式学习笔记(二) - 打怪升级

    本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...

  4. JavaScript简易学习笔记

    学习地址:http://www.w3school.com.cn/js/index.asp 文字版: https://github.com/songzhenhua/github/blob/master/ ...

  5. 【MarkMark学习笔记学习笔记】javascript/js 学习笔记

    1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...

  6. Javascript MVC 学习笔记(一) 模型和数据

    写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...

  7. Javascript作用域学习笔记(三)

    看完<你不知道的javascript>上,对作用域的新的理解(2018-9-25更) 一.学习笔记:   1.javascript中的作用域和作用域链 +  每个函数在被调用时都会创建一个 ...

  8. ServletListener对象学习笔记

    JavaWeb学习笔记--监听器详解 知识概要: 1.监听器下例子举例 2.Servlet规范中的监听器 3. 4. 1. 监听器下例子举例说明: /* Frame:事件源.发生事件的对象 Windo ...

  9. JavaScript新手学习笔记(一)

    1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...

随机推荐

  1. Ajax异步获取html数据中包含js方法无效的解决方法

    页面上使用js写了一个获取后台数据的方法 function data() { var tab = $("#dic") $.ajax({ url: '../demo.ashx?met ...

  2. 剑指offer编程题Java实现——替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. package ...

  3. ftp服务搭建

    文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录  /var/ftp/pub 匿名登陆 创建一 ...

  4. 2017-2-28 C#基础 数组

    1.什么是数组? 数组就是具有相同数据类型变量的集合. 2.数组的作用:操作大量数据. 3.数组的定义要求:(1)数组里面的内容必须是同一类型.(2)数组必须有长度限制. 4.数组分为一维数组,二维数 ...

  5. java数组、泛型、集合在多态中的使用及对比

    我们在使用数组,泛型集合的过程中不可避免的会碰到多态,或者说什么情况下能如何使用父数组引用子数组(集合.泛型)呢? 数组在多态中的使用 元素为父类型的数组引用可指向元素为子类型的数组对象 当数组被调用 ...

  6. .net平台的rabbitmq使用封装

    前言 RabbitMq大家再熟悉不过,这篇文章主要整对rabbitmq学习后封装RabbitMQ.Client的一个分享.文章最后,我会把封装组件和demo奉上. Rabbitmq的运作 从下图可以看 ...

  7. Laravel路由和控制器的绑定

    路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由. Route::get('/', function () { return view('welcom ...

  8. Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)

    ArrayList 就是数组实现的啦,没什么好说的,如果数组不够了就扩容到原来的1.5倍 实现了迭代器 package com.wenr.collection; import java.io.Seri ...

  9. 详细领悟ThreadLocal变量

    关于对ThreadLocal变量的理解,我今天查看一下午的博客,自己也写了demo来测试来看自己的理解到底是不是那么回事.从看到博客引出不解,到仔细查看ThreadLocal源码(JDK1.8),我觉 ...

  10. java之重定向与转发

    昨天搞了一个问题,关于手机返回按钮的(Android机,ios没有返回键) 在每一步操作都要进过鉴权,如果鉴权不通过就需要跳转到指定jsp页面,再进行link:到app进行登录操作: 然后问题出现了, ...