JavaScript引用类型之Object类
2016-01-08 20:35
429 查看
ECMAScript中的Object类跟Java中的Object类相似,ECMAScript中的全部类都由这个类继承而来,Object类中的全部属性和方法都会出如今其他类中,所以理解Object类,就能够更好的理解其他类。
属性的名字能够是包含空字符串在内的随意字符串。属性值能够是除undefined值之外的不论什么值。
JavaScript里的对象是无类型的。它对新属性的名字和属性的值没有限制。
对象和适用于汇集和管理数据。对象能够包括其它对象,所以它们能够easy地表示成树状或图形结构。
Object类型用于创建自己定义对象(实例),创建方式有两种:
对象属性的訪问能够直接採用 对象名.属性名称 的方式。
对象字面量表示法
里面的属性名和属性值採用key:value键值对的形式。当中key上面的引號通常能够省略掉。
对象属性的方式也能够採用 对象名[属性名] 的方式。
点表示法 对象名.属性名称
方括号表示法 对象名[属性名称]
假设属性名中包括会导致语法错误的字符。或者属性名使用的是keyword或保留字,也能够用方括号表示法。
属性名中包括空格所以不能使用点表示法訪问它.
点表示法 訪问 dog 的 name 属性
方括号表示法 訪问 dog 的 name 属性
使用方括号表示法。假设属性比較多的时候。必须挨个的使用[ 和 ],且还要用引號引起属性名称,不如点表示法的直接。
比較完两种方式:訪问属性推荐使用点表示法,除非没办法用点表示法的时候选择用方括号訪问
constructor --- 对创建对象的函数的引用。对于Object类,该指针指向原始的object() 函数。
prototype --- 对该对象的对象原型的引用。
对于全部的类,它默认返回Object对象的一个实例。
hasOwnProperty --- 推断对象是否有某个特定的属性。必须用字符串指定该属性(比如:obj.hasOwnProperty(“name”))。
isPrototypeOf(object) --- 推断该对象是否为还有一个对象的原型。
propertyIsEnumerable(property) --- 推断给定的属性能否够用for…in 语句进行枚举。
toString() --- 返回该对象的原始字符串表示。
valueOf() --- 返回最适合该对象的原始值。
hasOwnProperty()、isPrototypeOf(object)、propertyIsEnumerable(property) 这三个方法在讲了原型prototype之后再细述,这里不做介绍了。
对象的创建
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之后再细述,这里不做介绍了。
相关文章推荐
- ProtocolBuffer for Objective-C 运行环境配置及使用
- 【Objective-C学习记录】第三十八天
- Objective-C单例模式的正确写法
- OC中==与isEqual
- Objective-C的description方法
- counting objects in class
- Java中Object转化为int类型
- $.extend() 或 jQuery.extend() 与 $.fn.Xxx 或 jQuery.fn.extend(object) 之jQuery插件开发
- 消息转发原理浅析
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- Object-C中编写省略参数的多参数函数
- Objective-C的动态特性
- C#读书笔记之object类的基本方法
- 解析Soapobject传递class
- Objective-C基础学习_@property的所有属性详解
- OS开发(Objective-C)常用库索引
- NSString转为基本数据类型
- NSNumber讲解之三——NSNumber转换为NSString
- [对象 performSelector:SEL withObject:id withObject:id]; 只有2个参数,而且是对象参数
- Object C学习笔记2-NSLog 格式化输出数据