javaScript对象学习笔记(一)
一.什么是对象
对象:
- JavaScript的一种基本数据类型
- 对象是属性的无序集合,每个属性都是一个名/值对
- JavaScript中的事物都是对象:字符串、数值、数组、函数...
- JavaScript对象是动态的,在于它可以新增删除属性
- JavaScript提供多个内置对象,比如String、Date、Array等
对象最常见的用法是创建(create)、设置(set)、查找(query)、删除(delete)、检测(test)和枚举(enumerate)它的属性。
对象的属性包含名字和值,除此之外,每个属性还有一个与之相关的值,称为“属性特性”:
- configurable attribute(可配置):表明能否使用delete操作符删除从而重新定义,或能否修改为访问器属性,默认为true
- Enumerable attribute(可枚举):表明是否可以通过for-in循环返回该属性,默认true
- writable attribute(可写):表明是否可以设置该属性的值,默认true
三类JavaScript对象和两类属性:
- 内置对象(native object):由ECMAScript规范定义的对象或类。比如String、Date、Array等
- 宿主对象(host object):是由JavaScript解释器所嵌入的宿主环境(比如web浏览器)定义的。客户端JavaScript中表示网页结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当成普通的JavaScript函数对象,那么宿主对象也可以当成普通的内置对象
- 自定义对象(user-defined object):由运行中的JavaScript代码创建
- 自有属性(own property):直接在对象中定义的属性
- 继承属性(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对象学习笔记(一)的更多相关文章
- javaScript 对象学习笔记
javaScript 对象学习笔记 关于对象,这对我们软件工程到学生来说是不陌生的. 因为这个内容是在过年学到,事儿多,断断续续,总感觉有一丝不顺畅,但总结还是要写一下的 JavaScript 对象 ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- JavaScript简易学习笔记
学习地址:http://www.w3school.com.cn/js/index.asp 文字版: https://github.com/songzhenhua/github/blob/master/ ...
- 【MarkMark学习笔记学习笔记】javascript/js 学习笔记
1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...
- Javascript MVC 学习笔记(一) 模型和数据
写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...
- Javascript作用域学习笔记(三)
看完<你不知道的javascript>上,对作用域的新的理解(2018-9-25更) 一.学习笔记: 1.javascript中的作用域和作用域链 + 每个函数在被调用时都会创建一个 ...
- ServletListener对象学习笔记
JavaWeb学习笔记--监听器详解 知识概要: 1.监听器下例子举例 2.Servlet规范中的监听器 3. 4. 1. 监听器下例子举例说明: /* Frame:事件源.发生事件的对象 Windo ...
- JavaScript新手学习笔记(一)
1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...
随机推荐
- PropertyChangeSupport的使用
使用目的 当你需要监听对象属性的变化时,可以使用PropertyChangeSupport类来管理监听器,可以在一些关联属性的场合使用. 使用示例,以下为BetaConfig对象添加了管理属性监听器的 ...
- Java Properties类源码分析
一.Properties类介绍 java.util.Properties继承自java.util.Hashtable,从jdk1.1版本开始,Properties的实现基本上就没有什么大的变动.从ht ...
- GDKOI2015滚粗记
又是愉悦的滚粗了hahaha(特别不甘心啊啊啊) 其实去比赛每次都一样啦,就是每次吃饭睡觉补番考试评讲互黑跪烂什么的,这次就不用说了啦,先把老师要求写的东西贴出来再写点别的啦 这次暴露了很多问题,首先 ...
- git合并别的分支某次提交或合并
合并别的分支某次提交 master分支上改了一个bug.提交到master分支.现在在dev分支上开发,需要把master分支上改的那个bug合过来.步骤是:先在master分支上查改那个bug的SH ...
- c++STL排序算法注意事项
关于算法中的比较函数 #include<iostream> #include<algorithm> using namespace std; int compare(doubl ...
- UCOSII时间任务块
转:http://blog.csdn.net/wchp314/article/details/5416476 uCOS-II的任务控制块 标签: uCOS-II 2009-12-01 14:45 ...
- 2017-2-19 C#基础 基本数据类型的转换,转义字符,常量
1.基本数据类型的转换分两种:自动转换(隐式转换)和强制转换(显式转换).自动转换是从只类型转换到引用类型.强制转换是最长用的,是从引用类型转换到值类型或者从浮点型转换到整形.强制转换主要有三种形式: ...
- [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件
云计算之hadoop.hive.hue.oozie.sqoop.hbase.zookeeper环境搭建及配置文件已经托管到githubhttps://github.com/sxyx2008/clou ...
- python算法(一)
python算法(一) 一.求数x的因子 x=100 divisors=()#初始化空的元组 for i in range(1,x): if x%i==0: divisors=divisors+(i, ...
- 如何配置多台mysql 服务器?
当我们数据量增大时,数据库需要进行扩张时,或者做高可用,那么我们就需要用到同时多台mysql服务器.通过配置:可以实现,一台主mysql,负责记录数据的变化,多台从mysql,查询结果.修改文件:/w ...