JavaScript引用类型之Object类
ECMAScript中的Object类跟Java中的Object类相似,ECMAScript中的全部类都由这个类继承而来,Object类中的全部属性和方法都会出如今其他类中,所以理解Object类,就能够更好的理解其他类。
对象的创建
JavaScript的对象是属性的容器,当中每一个属性都拥有名字和值。
属性的名字能够是包含空字符串在内的随意字符串。属性值能够是除undefined值之外的不论什么值。
JavaScript里的对象是无类型的。它对新属性的名字和属性的值没有限制。
对象和适用于汇集和管理数据。对象能够包括其它对象,所以它们能够easy地表示成树状或图形结构。
Object类型用于创建自己定义对象(实例),创建方式有两种:
new后面加Object构造方法
var cat = new Object();
cat.name = "tomcat";
cat.age = 3;
alert("cat's name is " + cat.name + " and its age is " + cat.age);
对象属性的訪问能够直接採用 对象名.属性名称 的方式。
对象字面量表示法
<pre name="code" class="javascript">var dog = {
"name":"hotdog",
"age":3
}
里面的属性名和属性值採用key:value键值对的形式。当中key上面的引號通常能够省略掉。
var dog = {
name:"hotdog",
age:3
}
alert("dog's name is " + dog["name"] + " and its age is " + dog["age"]);
对象属性的方式也能够採用 对象名[属性名] 的方式。
对象属性的訪问
对象属性的訪问方式有两种:点表示法和方括号表示法。
- 点表示法 对象名.属性名称
- 方括号表示法 对象名[属性名称]
方括号表示法的长处
- 能够通过变量来訪问属性
var pName="name";
alert(cat[pName]);
- 假设属性名中包括会导致语法错误的字符。或者属性名使用的是keyword或保留字,也能够用方括号表示法。
cat["lovely brother"]="Tom";
属性名中包括空格所以不能使用点表示法訪问它.
var catObj = {
name : "tomcat",
"lovely brother" : "tom"
}
var pName = "name";
alert(catObj[pName]); // output tomcat
alert(catObj["lovely brother"]); // output tom
点表示法长处
假设属性的层次比較深的时候。使用方括号表示法表示麻烦;可是使用点表示法就可以方便的一层层的訪问到须要的属性。
var animals = {
dog : {
name : "hotdog",
age : 4
},
cat : {
name : "tomcat",
age : 3
}
}
点表示法 訪问 dog 的 name 属性
alert(animals.dog.name);
方括号表示法 訪问 dog 的 name 属性
alert(animals["dog"]["name"]);
使用方括号表示法。假设属性比較多的时候。必须挨个的使用[ 和 ],且还要用引號引起属性名称,不如点表示法的直接。
比較完两种方式:訪问属性推荐使用点表示法,除非没办法用点表示法的时候选择用方括号訪问
Object类的属性
Object类具有下列属性:
- constructor --- 对创建对象的函数的引用。对于Object类,该指针指向原始的object() 函数。
- prototype --- 对该对象的对象原型的引用。
对于全部的类,它默认返回Object对象的一个实例。
var obj = new Object();
alert(obj.constructor);
// output
/*
function Object() {
[native code]
}
*/
Object类的方法
Object类具有例如以下方法:
- hasOwnProperty --- 推断对象是否有某个特定的属性。必须用字符串指定该属性(比如:obj.hasOwnProperty(“name”))。
- isPrototypeOf(object) --- 推断该对象是否为还有一个对象的原型。
- propertyIsEnumerable(property) --- 推断给定的属性能否够用for…in 语句进行枚举。
- toString() --- 返回该对象的原始字符串表示。
- valueOf() --- 返回最适合该对象的原始值。
var tomObj = {
name : "tomcat",
age : 4
}
alert(tomObj.hasOwnProperty("name")); // output true
alert(tomObj.hasOwnProperty("sex")); // output false
alert(tomObj.toString()); // [object Object]
alert(tomObj.valueOf()); // [object Object]
hasOwnProperty()、isPrototypeOf(object)、propertyIsEnumerable(property) 这三个方法在讲了原型prototype之后再细述,这里不做介绍了。
JavaScript引用类型之Object类的更多相关文章
- JavaScript笔记——引用类型之Object类型和Function类型
<JavaScript高级程序设计>中介绍的几种JavaScript的引用类型,本文只记了Object跟Function类型 Object类型 创建对象 var person = new ...
- JavaScript的进阶之路(三)引用类型之Object类型和Array类型
引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var o ...
- 浅析JavaScript引用类型之--Object、Array
1.Object类型 对象是某个特定引用类型的实例,新对象有两种创建方式: i.使用new操作符调用构造函数来创建. var person = new Object(); person.name = ...
- JavaScript引用类型之Object类型
在JavaScript中大多数的引用类型都是Object的实例,Object类型也是使用最多的类型! 创建Object类型实例的方式有两种,下面分别来分析一下: (1)第一种是使用new操作符后跟Ob ...
- Object类可以接受引用类型
Object类是一切类的父类,所以Object类可以接受一切引用类型.连数组和接口对象也都可以接受. 1.接受数组 public class ObjectTest{ public static voi ...
- JavaScript学习总结(十一)——Object类详解
一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructo ...
- JavaScript引用类型
引用类型虽然看起来和类很相似,但是它们却是不同的概念,引用类型的值,也就是对象是引用类型的一个实例.在Js中引用类型主要有Object,Array,Date,正则,Function等. 数组Array ...
- Java基础12:深入理解Class类和Object类
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- JS的Object类的属性、方法及如何创建对象
属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Obje ...
随机推荐
- android开发隐藏了actionbar仍然短暂闪现的解决方法
有时候我们在代码里隐藏了actionbar,在打开应用时,仍然短暂闪现下actionbar,用户体验很不好. 最简单的方法是 在AndroidManifest.xml中设置主题中配置不显示titl ...
- 编译kernel:配置
韦东山Linux视频第1期_裸板_UBoot_文件系统_驱动初步\第10课第2节 内核启动流程分析之配置.WMV 下面以DM9000的配置为例: 在一个编译好的内核代码里,寻找CONFIG_DM900 ...
- linux: 鸟哥的私房菜
鸟哥的私房菜 http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php
- sql: sql developer tunnel转接
Use putty tunnel instead of login terminal server 有时候本地直接ping不通sql 的server, 但另一个server能连上,这时就可以把端口和i ...
- 终于懂了:WM_PAINT中应该用BeginPaint与EndPaint这两个api,它们的功能正是使无效区域恢复(所以WM_PAINT里即使什么都不做,也必须写上BeginPaint与EndPaint)——Delphi里WM_PAINT消息的三个走向都做到了这一点 good
程序本来是想实现鼠标单击改变背景颜色.可是,程序运行时,为什么没有任何消息触发,背景颜色就一直不断的改变了?WM_PAINT怎么被触发的 #include <windows.h> #inc ...
- Can't call commit when autocommit=true(转)
java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLEx ...
- linux命令:rm
删文件要一个个回答y,谁有好办法自动删除? rm -rf 用rm递归删除目录下面的所有.o文件: find . -name "*.o" | xargs rm -f :
- (08)DBA写给开发的索引经验
索引可是个大事情,翻开任意一本数据库调优的书,索引都会占到比较大的篇幅.这是个人人都很重视的问题,可往往起始阶段还好,但数据库到最后常常还是会陷入由索引起的性能怪圈中.特别是在上线运行过一 ...
- qt下的跨目录多工程编译
原地址:http://blog.csdn.net/fjb2080/article/details/7386292 转自:http://blog.csdn.net/high_high/article/d ...
- Ubuntu环境下SSH的安装及使用
Ubuntu环境下SSH的安装及使用 SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器 .SSH的简介和工作机制可参看上篇文章SSH简介及工作机 ...