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 ...
随机推荐
- weex官方demo weex-hackernews代码解读(下)
weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.而weex-hacknews则是weex官方出品的,首个使用 Weex 和 Vu ...
- Thrift入门初探(2)--thrift基础知识详解
昨天总结了thrift的安装和入门实例,Thrift入门初探--thrift安装及java入门实例,今天开始总结一下thrift的相关基础知识. Thrift使用一种中间语言IDL,来进行接口的定义, ...
- Java 同步容器和并发容器
同步容器(在并发下进行迭代的读和写时并不是线程安全的) Vector.Stack.HashTable Collections类的静态工厂方法创建的类(如Collections.synchr ...
- [编织消息框架][rpc]使用篇
rpc 分两部份,一个是调用者,另一方是服务提供者 调用者只关心那个服务,传相应参数,返回内容就可以 而提供者根据调用相应服务同参数,工作处理后响应内容即可 根据他们的关系可以用JAVA 接口同实现类 ...
- oracle 用系统用户以SYSDBA身份登陆
最近发现很多人问我 这么直接用系统OS用户 登陆 oracle : 1.首先通过用管理身份打开DOS命令窗口: 然后使用命令: sqlplus / as sysdba 即可: 其实这个命令和用sys用 ...
- redhat linux enterprise 5 输入ifconfig无效的解决方法
redhat linux enterprise 5 输入ifconfig无效的解决方法 在安装完成linux后,进入终端,输入命令行ifconfig,会提示bash: ifconfig: comm ...
- 程序点滴001_Python模拟点阵数字
尝试过很多编程语言,写过不少程序(当然,基本上都是些自娱自乐或给自己用的工具类的小玩意儿),逐渐认识到编写程序是一个不断完善.不断优化的过程——编程首先要有一个想法(目标),围绕这个目标形成最基本的功 ...
- Hibernate一对一外键映射
Hibernate 一对一外键映射 ------------------------------ ----- ...
- Jquery中的重置
提交表单是像下面这样的:代码 $('#myform').submit() $('#myform').submit() 所以,想当然的认为,重置表单,当然就是像下面这样子喽:代码 $('#myform ...
- Java面试03|并发及锁
1.synchronized与Lock的区别 使用synchronized这个关键字实现的同步块有一些缺点: (1)锁只有一种类型 (2)线程得到锁或者阻塞 (3)Lock是在Java语言层面基于CA ...