11. JavaScript 对象
Javascript 中的内部对象按照使用方式可分为动态对象和静态对象。在引用动态对象的属性和方法时,必须使用new关键字来创建一个对象实例,然后才能使用”对象名.成员”的方式来访问其属性和方法;引用静态对象的属性和方法时,不需要使用new关键字来创建对象实例,直接使用”对象名.成员”的方式来访问其属性和方法即可。
1. Object 对象
Object 对象提供了对象的最基本功能,这些功能构成了所有其他对象的基础,同时还提供了创建自定义对象的简单方式,不需要再定义构造函数。使用 Object 对象可以在程序运行时为 Javascript 对象随意添加属性,因此可以很容易的创建自定义对象。
2. Object 对象属性
(1) prototype 属性
该属性返回对象类型原型的引用:
ObjectName.prototype
用 prototype 属性可以提供对象的类的一组基本功能。对象的新实例"继承"赋予该对象原型的操作。
例如,要为Array对象添加返回数组中最大元素值的方法是,声明该函数,
将它加入Array.prototype,并使用它。
function array_max()
{var i,max=this[0];for(i=1;i<this.length;i++){if(max<this[i]);max=this[i];}return max;
}Array.prototype.max = array_max;
var x = new Array(1,2,3,4,5,6);
var y = x.max();
alert(y);输出:6
所有 JScript 固有对象都有只读的prototype属性,可以像该例中那样为原型添加功能,
但该对象不能被赋予不同的原型。然后,
用户定义的对象可以被赋给新的原型。
本语言参考每个内部对象的方法和
属性列表指出哪些对象原型的部分,哪些不是。
(2) constructor 属性
该属性表示创建对象的函数。
object.constructor
参数说明:
object : 必选项,是对象或函数的名称。
constructor 属性是所有具有prototype 的对象的成员。它们包括除Global 和 Math
对象以外的所有 JScript 固有对象。constructor
属性保存了对构造特定对象实例的函数的引用。例如:
var x = new String("Hi");
if(x.constructor==String)
{alert("zhen");
}
输出:"zhen"
或function MyFunc()
{}var y = new MyFunc();
if(y.constructor == MyFunc)
{alert("lala");
}
输出:"lala"
对象中的方法:
toString(),toLocaleString()方法返回string类型,valueOf()方法返回Object类型。
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…
此外,JavaScript 允许自定义对象。
JavaScript 对象
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型.
访问对象的属性
属性是与对象相关的值。
访问对象属性的语法是:
objectName.propertyName
访问对象的方法
方法是能够在对象上执行的动作。
您可以通过以下语法来调用方法:
objectName.methodName()
创建 JavaScript 对象
通过 JavaScript,您能够定义并创建自己的对象。
创建新对象有两种不同的方法:
定义并创建对象的实例
使用函数来定义对象,然后创建新的对象实例
**创建直接的实例**这个例子创建了对象的一个新实例,并向其添加了四个属性:
实例person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
**使用对象构造器**本例使用函数来构造对象:
实例
<!DOCTYPE html>
<html>
<body><script>
function person(firstname,lastname,age,eyecolor)
{this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}myFather=new person("Bill","Gates",56,"blue");document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script></body>
</html>
**创建 JavaScript 对象实例**一旦您有了对象构造器,就可以创建新的对象实例,就像这样:var myFather=new person("Bill","Gates",56,"blue");
var myMother=new person("Steve","Jobs",48,"green");
把属性添加到 JavaScript 对象
您可以通过为对象赋值,向已有对象添加新属性:
假设 personObj 已存在 - 您可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";x=person.firstname;
在以上代码执行后,x 的值将是:
Bill
把方法添加到 JavaScript 对象
方法只不过是附加在对象上的函数。
在构造器函数内部定义对象的方法:
function person(firstname,lastname,age,eyecolor)
{this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;this.changeName=changeName;
function changeName(name)
{this.lastname=name;
}
}
changeName() 函数 name 的值赋给 person 的 lastname 属性。
现在您可以试一下:
myMother.changeName("Ballmer");
JavaScript 类
JavaScript 是面向对象的语言,但 JavaScript 不使用类。
在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。
JavaScript 基于 prototype,而不是基于类的。
JavaScript for…in 循环
JavaScript for…in 语句循环遍历对象的属性。
语法
for (对象中的变量)
{
要执行的代码
}
注释:for…in 循环中的代码块将针对每个属性执行一次。
实例
循环遍历对象的属性:
var person={fname:"Bill",lname:"Gates",age:56};for (x in person){txt=txt + person[x];}
基于对象编程:
内存回收
11. JavaScript 对象相关推荐
- 我对javascript对象的理解
前言 JavaScript这门语言除了基本类型都是对象,可以说JavaScript核心就是对象,因此理解JavaScript对象及其种种特性至关重要,这是内功.本文介绍了我对es5对象,原型, 原型链 ...
- Javascript对象的查询字符串编码
您是否知道将Javascript对象编码为可通过GET请求传递的string的快速简便的方法? 没有jQuery ,没有其他框架-仅是纯Javascript :) #1楼 如果要递归转换嵌套对象,并且 ...
- 如何将键/值对添加到JavaScript对象?
这是我的对象文字: var obj = {key1: value1, key2: value2}; 如何向对象添加{key3: value3} ? #1楼 您可以使用其中任何一个(提供的key3是您要 ...
- 使用jQuery将表单数据转换为JavaScript对象
如何将表单的所有元素转换为JavaScript对象? 我希望有一些方法可以自动从表单中构建JavaScript对象,而不必遍历每个元素. 我不需要$('#formid').serialize();返回 ...
- 如何动态合并两个JavaScript对象的属性?
我需要能够在运行时合并两个(非常简单的)JavaScript对象. 例如,我想: var obj1 = { food: 'pizza', car: 'ford' } var obj2 = { anim ...
- 如何测试一个空的JavaScript对象?
在AJAX请求之后,有时我的应用程序可能返回一个空对象,例如: var a = {}; 如何检查情况呢? #1楼 如果您使用的是较新的浏览器,则有一种简单的方法. Object.keys(obj).l ...
- 如何正确克隆JavaScript对象?
我有一个对象x . 我想将其复制为对象y ,以使对y更改不会修改x . 我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性. 这不是问题,因为我正在复制自己的文字构造对象之 ...
- JavaScript对象this指向(普通键this指向 非指向函数的键)
1.结论 JavaScript对象普通键(非指向函数的键)this指向是window. 2.示例 <!DOCTYPE html> <html lang="zh"& ...
- JavaScript 对象与数组参考大全
http://www.cnblogs.com/meil/archive/2006/06/28/437527.html本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作 ...
- Javascript 对象二(Number、String、Boolean、Array、Date、Math、RegExp)
Javascript 对象二(Number.String.Boolean.Array.Date.Math.RegExp) Number 数字 对象 String 字符串 对象 Boolean 布尔 对 ...
最新文章
- Traveller项目介绍
- 云原生思想 — 云原生应用
- django.core.exceptions.ImproperlyConfiguredmysqlclient 1.3.13 ornewer is required you have 0.9.2(亲测)
- 乐高(LEGO)在线购物店面剖析
- 【python pandas excel操作】
- db2和mysql语句区别_db2和mysql语法的区别是什么
- 倍增:喷泉 深度解析(洛谷P7167)
- PI数据库的使用-PI System Management Tools
- cmd 找到8080对应进程_多进程概括
- 爬虫-scrapy数据的持久化存储
- 乐视 logo 换新:显示“老板造车美利坚”;雷军给米粉起名小粽子;谷歌浏览器不再隐藏完整 URL|极客头条...
- windows与linux多线程对比
- 【夏虫语冰】visio2013安装出错,无法打开注册表,错误码1402
- latex参考文献编译不成功
- 2017 清北学堂 Day 6终极考试报告
- GNSS常用术语(缩略语)总结------------持续更新
- 白色恋人--18首扣人心弦的经典情歌
- X86、NP、ASIC、MIPS架构对比,存储
- 神经网络之 CNN 与 RNN 再梳理
- 读书笔记 高效能人士的执行4原则