- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVASCRIPT对象基础讲解
1.Object对象详解
javascript 里最基本的数据类型是对象。javaScript 里的对象其实是一个无序的属性集合,
属性又是一个个的名-值对。
除了字符串,数字,true,false,null 或者undefined 以外,其他所有的值在JavaScript 里头
都是对象。
对象是引用类型,如果变量x 表示一个对象,当执行var y x;语句后,实际上y 和x 指向
的是同一个对象。所以,当你通过y 改变对象的值,这种变化也会反映到x 上。
Object 是在javascript 中一个被我们经常使用的类型,而且JS 中的所有对象都是继承自
Object 对象的。
1.1 创建对象:
首先我们都知道,对象就是一组相似数据和功能的集合,我们就是用它来模拟我们现实世
界中的对象的。那在Javascript 中,创建对象的方式通常有两种方式:构造函数(new 关键字)和
对象字面量。
1. 字面量表示法:
对象字面量很好理解,使用key/value 的形式直接创建对象,简洁方便。
varbook {}; //创建一个没有属性的对象
varbook {
name :TheDefinitive Guide,
main title :JavaScript, //当属性名中间有空格,或者-时,要用引号把属性名括起
来
author : { //对象的属性也可以是对象
firstname :Rex,
lastname :Mai
}
};
这种方式直接通过花括号将对象的属性包起来,使用key/value 的方式创建对象属性,每个
属性之间用逗号隔开。
注意:如果是最后一个属性,后面就不要加逗号,因为在一些旧的浏览器下会报错。
2. 使用new 关键字:
var o new Object();// 创建一个空对象,效果等同{}.
var d new Date();// 创建一个表示当前时间的对象
varr newRegExp(js);// 创建一个正则表达式对象
varperson new Object();
person.name 狼狼的蓝胖子;
person.age 25;
或者
functionPerson(name,age) {
this.name name;
this.age age;
this.show function(){}
}
varperson newPerson(Jack, 15);
Person.show()
这种方式使用new 关键字,接着跟上Object 构造函数,再来给对象实例动态添加上不同的属性。
原型对象概念
无论什么时候,只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype
属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor
(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。而通过这个构造
函数,可以继续为原型对象添加其他属性和方法。创建了自定义的构造函数后,其原型对象默
认只会取得 constructor 属性;至于其他方法,则都从 Object 继承而来。当调用构造函数创建
一个新实例后,该实例的内部将包含一个指针 (内部属性),指向构造函数的原型对象。
ECMA-262 第5版管这个指针叫 [[Prototype]] 。脚本中没有标准的方式访问 [[Prototype]],但
Firefox、Safari 和Chrome 在每个对象上都支持一个属性__proto__;而在其他实现中,这个属性
对脚本是完全不可见的。不过,要明确的真正重要的一点就是,这个连接存在于示例和构造函
数的原型对象之间,而不是存在于实例和构造函数之间。
这段话基本概述了构造函数、原型、示例之间的关系,下图表示更清晰
其实javascript 的new 关键字只不过做了五件事情。
1.创建Object
2.查找class 的prototype 上的所有方法、属性,复制一份给创建的Object (注意,如果prototype
上有属性是function 或者数组或者Object,那么只复制指针)
3.将构造函数classA 内部的this指向创建的Object
4.创建的Object 的__proto__指向class 的prototype
5.执行构造函数class
// 定义类 类名字是 classA
f
文档评论(0)