,,JavaScript类型系统之Object详解

,,JavaScript类型系统之Object详解

对象实际上是数据和函数的集合。通过执行new运算符,后跟要创建的对象类型的名称,可以创建对象。您可以通过创建对象类型的实例并向其添加属性和/或方法来创建自定义对象。

前面的话

在javascript中,对象为王;Javascript中的几乎所有东西都是对象或像对象一样使用。当你理解了对象,你就理解了Javascript。在javascript中,引用类型是一种用于将数据和函数组织在一起的数据结构。它也经常被称为类。引用有时被称为对象定义,因为它们描述了一类对象的属性和方法。

大多数引用类型的值都是对象类型的实例;而且,Object也是javascript中使用最多的类型。尽管对象实例没有太多的功能,但它们确实是应用程序中存储和传输数据的理想选择。

创建对象

有两种方法可以创建对象类型。

[1]Object构造函数

var person=new Object();

//如果不向构造函数传递参数,可以不留括号var person=new Object

person.name='白';

person.age=29

//创建一个没有属性的空对象

var Cody 1=new Object();

var cody2=新对象(未定义);

var cody3=新对象(空);

console.log(编码类型1,编码类型2,编码类型3);//object object对象

//创建字符串、数字、数组、函数、布尔值、正则表达式

console.log(新对象(' foo '));

console.log(新对象(1));

console.log(新对象([]));

console . log(new Object(function(){ });

console . log(new Object(true));

console.log(新对象(/\ bbt[a-z]\ b/));

【注意】object()构造函数本身就是一个对象,构造函数是基于函数构造函数创建的对象。

[2]使用对象字面量

Javascript为创建大多数本机对象值提供了称为文字的快捷方式。使用文本只会隐藏与使用new运算符相同的内容。

基本过程

var person={

姓名:'白',

年龄:29,

5:正确

};

【注意】逗号用于分隔对象文字量中的不同属性,但在最后一个属性后添加逗号会导致IE7-中出现错误

用对象的literal方法定义对象,属性名会自动转换成字符串。

//同上

var person={

姓名':'白',

年龄:29岁,

' 5 ':正确

};

如果将其花括号留空,则可以定义一个只包含默认属性和方法的对象。

//相当于var person=new Object();

var person={ };

[提示]用对象文字封装多个可选参数。

函数displayInfo(args){

var输出=“”;

if(typeof args.name=='string'){

output=' name:' args . name ' \ n ';

}

if(typeof args.age=='number'){

output=' Age:' args . Age ' \ n ';

}

console.log(输出);

};

显示信息({

姓名:“尼古拉斯”,

年龄:29岁

});

显示信息({

名称:“匹配”

});

上述传递参数的模式最适合需要向函数传递大量可选参数的情况。一般来说,虽然命名参数很容易处理,但当有多个可选参数时,它不够灵活。因此,形式参数用于必需的值,而对象文字用于封装多个可选参数。

设置对象

有两种方法可以访问对象的属性。您可以通过点符号或括号符号来获取、设置或更新对象的属性。

括号方法的两个优点是可以通过变量访问属性,属性名可以是Javascript无效标识符。

【注意】中文可以存在于变量中,因为中文相当于字符,和英文字符一样对待,所以可以写成person。白色或人['白色']

var myObject={

123:'零',

类别:“foo”

};

console.log(myObject['123'],my object[' class ']);//'zero' 'foo '

console . log(my object . 123);//报告错误

如果方括号内的值为非字符串类型,将使用String()将其隐式转换为字符串后输出;如果是字符串类型,有引号就输出原值;否则,它将被识别为变量;如果变量未定义,将会报告一个错误。

person[0]=1;//[]中的数字不会被报告为错误,但会自动转换为字符串。

人[a]=1;//[]符合变量命名规则的元素会被当作变量,变量未定义,会报错。

person[' ']=2;//[]空字符串不会报错,它实际存在,可以调用,但不会显示在控制台右侧的集合中。

person[未定义或空或真或假]=4;//不会报告错误,但会自动转换成字符串

人['白']=6;//不会报告任何错误。

删除对象

删除运算符可用于从对象中完全删除属性。删除是从对象中删除属性的唯一方法。将属性设置为undefined或null只能更改属性的值,而不会从对象中删除属性。删除只能删除对象下的数据,其他五种基本类型的值不能删除。

[注意]删除不会删除原型链上的属性。

var foo={ bar:' bar ' };

删除foo.bar

console . log(foo中的' bar ');//假

var a=123

删除a;

console . log(a);//123

如果变量A是在全局状态下声明的,相当于window对象下的一个数据A,可以用window.a或者A赋值,window.a和A的值总是相等的,但是不能删除。

var a;

a=10

console.log(a,window . a);//10 10

window.a=20

console.log(a,window . a);//20 20

删除a;

console.log(a,window . a);//20 20

删除window.a

console.log(a,window . a);//20 20

如果window.b用于声明和赋值(b相当于在window对象下声明),可以删除,使用delete b和delete window.b的效果是一样的。删除后console.log(b)提示变量不存在,console.log(window.b)提示未定义。

window.b=10

console.log(b,window . b);//10 10

删除b;

console . log(b);//报告错误

console . log(window . b);//未定义

window.b=10

console.log(b,window . b);//10 10

删除window.b

console . log(b);//报告错误

console . log(window . b);//未定义

对象嵌套

对象可以嵌套,但必须逐层赋值。

var student={

名称:{

中文:1,

英语:2

},

性别:1,

年龄:26岁

}

【注意】值只能逐层取,比如student.name.chinese,不能跨名字取。可以直接用student.chinese,因为在名字的同一层级下也可能有叫做中文的元素。

var object1={

对象1_1:{

object1_1_1:{foo: 'bar'},

对象1_1_2:{}

},

对象1_2:{

对象1_2_1:{},

对象1_2_2:{}

}

};

console . log(object 1 . object 1 _ 1 . object 1 _ 1 _ 1 . foo);//酒吧

实例方法

构造函数:保存用于创建当前对象的函数。

HasOwnProperty(propertyName):用于检查给定属性是否存在于当前对象实例中(而不是实例的原型)。其中propertyName必须指定为字符串。

IsPrototypeOf(object):用于检查传入对象是否是传入对象的原型。

PropertyIsenumerable(property name):用于检查是否可以使用for-in语句枚举给定的属性。其中propertyName必须指定为字符串。

ToLocaleString():返回对象的字符串表示形式,它对应于执行环境的区域。

ToString():返回对象的字符串表示形式。

Value():返回对象的字符串、数字或布尔表示形式,通常与toString()方法的返回值相同。

var myObject={

马克:对

};

console . log(my object . constructor);//函数对象(){}

console . log(my object . hasownproperty(' mark '));//真

console . log(object . prototype . isprototypeof(my object));//真

console . log(my object . propertyisenumerable(' mark '));//真

console . log(my object . tolocalestring());//[对象对象]

console . log(my object . tostring());//[对象对象]

console . log(type of my object . value of(),my object . value of());//object Object{mark:true}

小结:

Object类型

对象实际上是数据和函数的集合。通过执行new运算符,后跟要创建的对象类型的名称,可以创建对象。您可以通过创建对象类型的实例并向其添加属性和/或方法来创建自定义对象。

var o=new Object();

对象的每个实例都有以下属性和方法:

constructor——保存用于创建当前对象的函数。

HasownProperty(property name)3354用于检查给定属性是否存在于当前对象实例中(而不是实例的原型)。其中,作为参数的propertyName必须指定为字符串(例如:o.hasOwnProperty('name '))

isprototypeof (object) 3354用于检查传入的对象是否是另一个对象的原型。

PropertyIsenumerable(property name)3354用于检查是否可以使用for-in语句枚举给定的属性。

toString()——返回对象的字符串表示。

valueOf()——返回对象的字符串、数字或布尔表示。通常与toString()方法的返回值相同。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: