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 ...
随机推荐
- Oracle instant client在windows下的安装和使用
安装 * 从oracle官方网站下载instant client文件,一般来说,有basic.sqlplus.odbc.jdbc,就足够用的了: instantclient-basic-win32-1 ...
- 浅谈css中一个元素如何在其父元素居中显示
css如何垂直居中一个元素的问题已经是一个老生常谈的问题了.不管对于一个新手或者老手,在面试过程中是经常被问到的.前两天在看一个flex的视频教程,当中提到了有关元素的居中问题,所以今天小编就来扒一扒 ...
- 关于BOM的理解
BOM提供了很多对象,用于访问浏览器的功能,这些功能与网页内容无关 BOM的核心对象时window,她表示浏览器的一个实例 window的双重角色 1.JS访问浏览器窗口的一个接口 2.ECMA ...
- MVC,MVP,MVVM
MVC模式: MVC即Model-VIew-Controller.他是1970年代被引入到软件设计大众的.MVC模式致力于关注点的切分,这意味着model和controller的逻辑是不与用户界面(V ...
- sping整合hibernate之二:dao层开发
在上一篇日志中将hibernate的会话工厂sessionFactory注入到了spring的容器中,但这样还不够,因为hibernate的增删改查是要使用事务机制的, 所以还要在spring中配置 ...
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望(离线+平衡树)
刷银组刷得好开心= = 离线按权值排序,从大到小插入二叉树,查找树中比这个数大的 CODE: #include<cstdio>#include<iostream>#includ ...
- TypeScript设计模式之门面、适配器
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- SQLServer提取日期中的年月日及其他格式
提取年:datepart(yy,getdate())提取月:datepart(mm,getdate())提取日:datepart(dd,getdate())提取日期格式:Select CONVERT( ...
- MD5加密 32位
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...
- JSON对象操作
---string 转jsonObject JSONObject j = JSONObject.fromObject(str); JSONObject j = JSONObject.fromObjec ...