javascript引用类型之对象Object

[前面的话]

  引用类型:在javascript中,引用类型是一种数据结构,用于将数据和功能组织在一起,它也常被称为类。引用类型有时也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
  引用对象的值(对象):是引用类型的一个实例。对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。对象的别名是集合。

Object:是一组数据和功能的集合

[1]对象创建:两种Object类型的创建方法
  [1.1]使用new操作符后跟Object构造函数

var person = new Object(); 类似于 var person = new Object;//也就是说可以不加括号
person.name = ‘bai‘;
person.age = 29;

  [1.2]使用对象字面量

var person = {
    name : ‘bai‘,
    age : 29
}

  [注意1]在对象字面量中使用逗号来分隔不同的属性,但是在最后一个属性后面添加逗号,会在IE7及更早版本和Opera中导致错误

  [注意2]使用对象字面量的方法来定义对象,属性名会自动转换成字符串,实际上不会调用Object构造函数 
  [注意3]如果留空其花括号,则可以定义只包含默认属性和方法的对象
  e.g. var person = {}; 相当于 var person = new Object();
    [1.2.1]使用对象字面量来封装多个可选参数的方法:

function displayInfo(args){
    var output = ‘‘;
    if(typeof args.name == ‘string‘){
        output += ‘name:‘ + args.name +‘\n‘;
    }

    if(tyoepf args.age == ‘number‘){
        output += ‘Age:‘ + args.age + ‘\n‘;
    }
    alert(output);
}
displayInfo({
    name: ‘Nicholas‘,
    age: 29
});

  [注意]以上这种传递参数的模式最适合需要向函数传入大量可选参数的情形。最好的做法是,对那些必需值使用形参,而使用对象字面量来封装多个可选参数。

[2]Object的实例的属性和方法
  [2.1]constructor:保存着用于创建当前对象的函数
  [2.2]hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,propertyName必须以字符串形式指定
  [2.3]isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
  [2.4]propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。其中,propertyName必须以字符串形式指定
  [2.5]toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  [2.6]toString():返回对象的字符串表示
  [2.7]valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同

[3]两种访问对象属性的方法
  [注意1]除非必须使用变量来访问属性,否则建议使用点表示法,且在属性名命名时尽量符合命名规则
  [注意2]变量中可以存在中文,因为中文相当于字符,与英文字符同样对待,因此可以写成person.白或person[‘白‘]
  [注意3]方括号中的值若是非字符串类型会使用String()隐式转换成字符串再输出;如果是字符串类型,若有引号则原值输出,否则会被识别为变量,若变量未定义,则报错

person[0] = 1; //[]中的数字不会报错,而是自动转换成字符串
person[a] = 1; //[]中符合变量命名规则的元素会被当成变量,变量未被定义,而报错
person[‘‘] = 2; //[]中的空字符串不会报错,是实际存在的且可以调用,但不会在控制台右侧的集合中显示
person[undefined 或 null 或 true 或 false] = 4;// 不会报错,而是自动转换成字符串
person[‘白‘] = 6; // 不会报错

  [3.1] person.name
  [3.2] person[‘name‘]
    [3.2.1]方括号的主要优点
      [a]可以通过变量来访问属性
      [b]属性名中可以包含导致语法错误的字符,或者属性名中使用的是关键字或保留字
      e.g. person[‘first name‘];

[4]对象可以嵌套,但必须逐层取值

var student = {
    name : {
        chinese : 1,
        englisth : 2
    },
    sex : 1,
    age : 26
}    

  [注意]取值只能一层一层取,如student.name.chinese,而不能跨过name,直接用student.chinese,因为与name的同级下也可能有叫chinese的元素

[5]对象的delete运算符: delete只能删除对象下的数据,其他5种基础类型的值是删除不掉的
  [5.1]如果在全局状态下声明变量a,相当于window对象下的一个数据a,可以通过window.a或a来对a赋值,且window.a和a的值总是相等,但就是无法删除
  [5.2]如果用window.b 来声明并赋值(b相当于声明在window对象下),可以删除,且用delete b 和 delete window.b 的效果相同,删除后,console.log(b)提示变量不存在,console.log(window.b)提示undefined

时间: 2024-08-10 17:21:21

javascript引用类型之对象Object的相关文章

javascript 内置对象及常见API

javascript 内置对象及常见API 2012-09-02 15:17 571人阅读 评论(0) 收藏 举报 javascript正则表达式文档浏览器urlstring Javascript内置对象学习 全局属性 Infinity 表示正无穷大的数值 NaN 非数字值 undefined 未定义的值 decodeURI() 对encodeURI()转义的字符串解码. decodeURIComponent() 对encodeURIComponent()转义的字符串解码. encodeURI(

【转】JavaScript中的对象复制(Object Clone)

JavaScript中并没有直接提供对象复制(Object Clone)的方法.因此下面的代码中改变对象b的时候,也就改变了对象a. a = {k1:1, k2:2, k3:3}; b = a; b.k2 = 4; 如果只想改变b而保持a不变,就需要对对象a进行复制. 用jQuery进行对象复制 在可以使用jQuery的情况下,jQuery自带的extend方法可以用来实现对象的复制. a = {k1:1, k2:2, k3:3}; b = {}; $.extend(b,a); 自定义clone

是否可以修改 JavaScript 的本地对象(native object)

本文翻译自RapydScript的作者 Alexander Tsepkov 的博客. 原文地址:http://blog.pyjeon.com/2014/05/17/modifying-native-javascript-objects/ 注:本地对象 (native object) 是指"独立于宿主环境的 ECMAScript 实现提供的对象",比如 Global 和 Math等. 在JavaScript社区,对于JavaScript本地对象(Array, Number, String

深入JavaScript对象(Object)与类(class),详细了解类、原型

JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一.JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制.在一定程度上js基于原型的对象机制依然维持了类的基本特征:抽象.封装.继承.多态.面向类的设计模式:实例化.继承.多态,这些无法直接对应到JavaScript的对象机制.与强类型语言的类相对应的是JavaScript的原型,所以,只能是基于原型来模拟实现类的设计模式. 为了便于理解,这里采用了Function构造函数及对象原型链

JavaScript——引用类型之数组

前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原型链一起写.本博将介绍引用类型Array,即JavaScript中的数组. Array 首先数组到底是什么呢?数组是一段线性分配的内存,它能通过整数计算偏移并访问其中的元素.遗憾的是这个定义是指其他语言中的数组,JavaScript中并没有此类数据结构.作为替代,JavaScript中基于对象创建了

JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()

JavaScript的数据类型都有什么? (via  BAT互联网公司2014前端笔试面试题:JavaScript篇  http://www.sxt.cn/u/756/blog/4508) 基本数据类型:String,boolean,Number,Undefined, Null 引用数据类型: Object(Array,Date,RegExp,Function) 疑问:这些基本的数据类型的值都是常量,而常量是没有方法的,为什么能够调用方法呢?答案是这样的,五种基本类型除了null.undefin

【javascript 引用类型(一)】

javascript 的引用类型大致分为:Object 类型.Array 类型.Date 类型.RegExp 类型.Function 类型.基本包装类型和单体内置对象.这里我们着重介绍 Object 类型.Array 类型和 RegExp 类型. [Object 类型] 创建 Object 实例的方式有两种,一种是使用 new 操作符后跟 Object 构造函数,代码如下: var person = new Object(); person.name = 'Nicholas'; person.a

javascript是判断对象是否是数组

JS中的数据类型: 2大类 原始类型:值保存在变量本地的数据类型 5种:Number String Boolean undefined null Number:8bytes 舍入误差-->四舍五入 String:每个英文字符 1byte 每个汉字字符 2bytes 一旦创建内容不可改变 Boolean: true false 引用类型:值不保存在变量本地的数据类型 js中的变量 vs 数据库  内存中 硬盘上的文件  临时的 持久的  客户端   服务器端只存一份 一般用typeof判断数据类型

javascript类型系统——Math对象

× 目录 [1]常量 [2]函数 前面的话 javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现.和其他对象不同,Math只是一个静态对象,而并没有Math()构造函数.实际上,Math只是一个由Javascript设置的对象命名空间,用于存储数学常量和函数.本文将详细介绍Math对象 new Math();//Uncaught TypeError: Math is not a constructor 常量 Math对象一