JS对象创建数组

合集下载

javascript定义数组的方法

javascript定义数组的方法

javascript定义数组的方法以Javascript定义数组的方法Javascript作为一种脚本语言,其灵活性和易用性在Web开发中得到了广泛的应用。

而数组作为Javascript中的一种重要数据类型,其在数据存储和处理中起到了至关重要的作用。

本文将介绍Javascript中定义数组的方法,希望能为初学者提供帮助。

一、使用数组字面量定义数组数组字面量是一种最简单和常见的定义数组的方法。

使用该方法可以在一行代码中定义一个数组,并为其赋初始值。

其语法格式为:```javascriptvar arr = [value1, value2, ..., valueN];```其中,value1, value2, ..., valueN是数组元素的初始值,可以是任意的Javascript表达式。

例如,定义一个包含5个元素的数组,并为其赋初值:```javascriptvar arr = [1, 2, 3, 4, 5];```二、使用Array构造函数定义数组除了使用数组字面量,还可以使用Array构造函数定义数组。

该方法需要使用new操作符来创建一个数组对象,并可以指定数组的长度和初始值。

其语法格式为:```javascriptvar arr = new Array();var arr = new Array(length);var arr = new Array(element0, element1, ..., elementN);```其中,length是数组的长度,element0, element1, ..., elementN 是数组元素的初始值。

需要注意的是,如果只传入一个参数,且该参数为数字类型,则会被视为数组的长度而不是元素的值。

例如,定义一个包含5个元素的数组,并为其赋初值:```javascriptvar arr = new Array(1, 2, 3, 4, 5);```三、使用Array.from方法定义数组在ES6之后,Javascript新增了一个Array.from方法,该方法可以将一个类数组对象或可迭代对象转换为一个真正的数组。

JS创建对象,数组,函数的三种方式

JS创建对象,数组,函数的三种方式

JS创建对象,数组,函数的三种⽅式 害怕⾃⼰忘记,简单总结⼀下 创建对象的3种⽅法 ①:创建⼀个空对象 var obj = {}; ②:对象字⾯量 var obj = { name: "Tom", age: 27, "first-name": "Jay", last_name: "Kin" } 注:①:对象字⾯量中的属性名可以是包括空字符串在内的任何字符串;属性值可以是除undefined值之外的任何值 ②:在对象字⾯量中,如果属性名是⼀个合法的JavaScript标识符且不是保留字,则不强求属性名加引号 ③:"first-name"是必须要加引号的,⽽last_name则是可选的 因为JavaScript规定标识符包含连接符 - 是不合法的,但允许包含下划线 _ ③:构造函数(不推荐) var obj = new Object(); 创建数组的3种⽅法 ①:创建⼀个空数组 var arr = []; ②:隐式创建 var arr = [1,2,3]; ③:构造函数(不推荐) var arr = new Array(3); (固定数组长度) arr[0] = 1; arr[1] = 2; arr[2] = 3; 创建函数的3种⽅式 ①:使⽤ function 关键字声明 function x() {} ②:函数表达式 var x = function() {} 注:函数表达式不会有函数声明提前 ③:构造函数(不推荐) var x = new Function();。

js数组方法详解(最新最全)

js数组方法详解(最新最全)

js数组⽅法详解(最新最全)数组是js中最常⽤到的数据集合,其内置的⽅法有很多,熟练掌握这些⽅法,可以有效的提⾼我们的⼯作效率,同时对我们的代码质量也是有很⼤影响。

本⽂所有的栗⼦都是在es7环境下测试的,如果有问题欢迎留⾔交流创建数组我将创建数组的⽅式分为以下四⼤类⼀、字⾯量⽅式使⽤对象字⾯量⽅式创建数组是我们最常⽤的⼀种⽅式const array1 = [1, 2, 3, 4, 5];⼆、使⽤Array构造⽅法⽆参构造使⽤⽆参构造可以创建⼀个长度为0的空数组const array1 = new Array();带参构造1. 如果只传⼀个数值参数,则表⽰创建⼀个初始长度为指定数值的空数组const array2 = new Array(3);2. 如果传⼊⼀个⾮数值的参数或者参数个数⼤于1,则表⽰创建⼀个包含指定元素的数组const array3 = new Array(1, 2, 3, 'array'); // [1, 2, 3, "array"]const array4 = new Array('23'); // ["23"]三、Array.of⽅法创建数组(es6新增)ES6为数组新增创建⽅法的⽬的之⼀,是帮助开发者在使⽤Array构造器时避开js语⾔的⼀个怪异点。

Array.of()⽅法总会创建⼀个包含所有传⼊参数的数组,⽽不管参数的数量与类型。

let arr = Array.of(1, 2);console.log(arr.length);//2let arr1 = Array.of(3);console.log(arr1.length);//1console.log(arr1[0]);//3let arr2 = Array.of('2');console.log(arr2.length);//1console.log(arr2[0]);//'2'在使⽤Array.of()⽅法创建数组时,只需将想要包含在数组内的值作为参数传⼊。

JavaScript之数组(Array)详解

JavaScript之数组(Array)详解

JavaScript之数组(Array)详解篇一:Javascript数组及其操作Javascript数组及其操作1.如何创建数组2.如何对数组进行操作(添加,删除,读取)3.数组常见方法和属性如何创建一个数组,一般地根据初始化设定简单分为3种:1.单纯创建数组:var arr=new Array();要点:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用2.创建数组的同时规定数组大小:var arr=new Array(10);//这里就创建了一个初始化大小为10的数组注意:当使用数组大小操作初始化大小时,数组会自动被撑大,不会像C语言那样发生错误.动态增长是js数组的一个性质.另外,js中支持最大数组长度为42949672953.直接初始化:var arr=new Array("love","hate","pain");//这里就直接初始化了数组或var arr=["happy","cute","scare"];//括号也可以声明一个数组对象当然,类似C语言,可以定义2维3维和多维的数组,例如:var myArray = new Array();for(var i=0;i myArray[i]=new Array();myArray[i][0]=Math.floor(Math.random()*10);myArray[i][1]=Math.floor(Math.random()*10);myArray[i][2]=Math.floor(Math.random()*10);myArray[i][3]=Math.floor(Math.random()*10);myArray[i][4]=Math.floor(Math.random()*10);myArray[i][5]=Math.floor(Math.random()*10);myArray[i][6]=Math.floor(Math.random()*10);myArray[i][7]=Math.floor(Math.random()*10);myArray[i][8]=Math.floor(Math.random()*10);}myArray.sort( function(x, y) ...{return(x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])});for(var i=0;i document.write(myArray[i].join(",") + "");}数组的属性:lengtharr.length返回数组arr的长度,常见于循环中对数组的遍历,比如:for(var i=0;i 执行部分}数组元素的访问: arr[index],其中index表示索引即数组基数,从0开始,共有arr.length个元素.比如: arr[0]访问第一个数组元素,arr[1]访问第二个数组元素....依次类推数组的操作方法:先概览下下面的这些操作数组常用的方法(13个)toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(), pop(),push(),shift(),unshift(),sort(),splice()下面逐一分析这些方法的功能和用法.toString(),valueOf(),toLocalString():功能:返回数组的全部元素注:数组名也可以返回整个数组代码:var m=["am","bm","cm"];//用括号声明一个数组对象alert(m.toString());//toString()返回数组对象的所有内容,用逗号分割,即am,bm,cmalert(m.valueOf());//valueOf()也返回数组对象的所有内容alert(m.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究alert(m);//数组名也返回数组对象的所有内容join():功能:把数组各个项用某个字符(串)连接起来,但并不修改原来的数组代码:var m=["am","bm","cm"];//用括号声明一个数组对象var n=m.join("---");//用---连接am,bm,cm.alert(m.toString());//m并没有被修改,返回am,bm,cmalert(n);//n是一个字符串,为am---bm---cmsplit():功能:把一个字符串按某个字符(串)分割成一个数组,但不修改原字符串代码:var str="I love maomao,I am caolvchong";var arr=str.split("o");//按字符o把str字符串分割成一个数组alert(arr);//输出整个数组slice():返回某个位置开始(到某个位置结束)的数组部分,不修改原数组代码:var n=m.slice(2);//返回第二个元素bm后面的元素,即cm,dm,em,fmvar q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,emalert(n);alert(q);数组对象的栈操作:push():数组末尾添加一个项pop():删除数组最后一个项代码:var m=["am","bm","cm","dm","em","fm"];m.push("gm");//在数组末尾添加元素gmalert(m);m.pop();//删除数组最后一个元素gmalert(m);数组对象的队列操作:unshift():数组头添加一个项shift():删除数组第一个项代码:var m=["am","bm","cm","dm","em","fm"];m.unshift("gm");//在数组第一个元素位置添加元素gmalert(m);m.shift();//删除数组第一个元素gmalert(m);sort():数组按字符的ASCII码进行排序,修改数组对象注:即便是数字数组,也将转化为字符串来进行比较排序代码:m.sort();//按字母序排序alert(m);concat():在数组尾添加元素,但不修改数组对象代码:var m=["am","bm"]var n=m.concat("cm");//添加一项cm,并且赋予新数组对象alert(m);//原数组没有被修改alert(n);//输出新数组对象splice():在数组的任意位置进行添加,删除或者替换元素,直接修改数组对象细节:splice()有三个参数或三个以上参数,前两个是必须的,后面参数是可选的进行添加:splice(起始项,0,添加项)进行删除:splice(起始项,要删除的项个数)进行替换:splice(起始项,替换个数,替换项) 这个其实是添加删除的共同结果代码:var m=["am","bm"]m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bmalert(m);m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm)alert(m);m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm)alert(m);JavaScript数组操作函数join(delimiter): 把数组中各个元素使用分隔符(delimiter)拼成字符串concat(array1, array2, ...): 合并数组,对原数组不影响,只是返回合并后的新数组pop(): 删除并返回最后一个元素push(element1, element2, ...): 在数组末尾追加元素shift(): 删除并返回第一个元素unshift(element1, element2, ...): 在数组开始位置添加元素reverse(): 将数组元素顺序首尾反转sort(function): 给数组排序如果不给参数,默认按字符排序(所有元素是数字也不会按数字排序的) 参数必须是一个函数,类似function(a, b) {},在函数中判断a, b的大小,a>b返回正数,a slice(start, end): 返回一个新的数组,将start 开始,到end结束(不包括end)之间的元素复制到新数组中splice(start, count, replaceElement1, replaceElement2, ...): 删除或者替换数组元素,从start开始,对count个元素进行删除或替换如果提供replaceElement参数则进行替换,否则进行删除操作,被替换的元素个数和replaceElements的个数不必相等返回一个数组,包含被删除或替换掉的元素判断是否数组的方法var arrayVar = ["aaa", "bbb", "ccc"];var nonArrayVar = { length:4, otherAttribute:"attr" };document.write(arrayVar.constructor==Array);document.write("");document.write(nonArrayVar.constructor==Array);结果是true, falsegrep、mapPerl语言带出来的东西,jQuery实现selector时用了这种方式grep对数组的grep操作,指类似这样的代码:Array newArray = grep(condition, oldArray),这个操作将对oldArray 数组的每个元素进行遍历,如果当前处理元素符合条件condition,则加入到返回数组中 jQuery中的grep类似这样: function( elems, callback),elems是DOM元素集合,callback是实现selector的一些表达式函数,如果callback返回true则表明当前处理的元素符合selector表达式篇二:javaScript基础之——数组javaScript基础之——数组目录创建数组的方法 .................................................................. .. (3)数组的内置方法 .................................................................. .. (3)数组首尾位置的数据项添加及删除方法 (3)array.push( value,… ) --- 向数组的尾部添加值 (4)array.unshift( value,… ) --- 在数组头部插入一个元素 (4)array.pop( ) --- 删除并返回数组的最后一个元素 (5)array.shift( ) --- 将元素移出数组 (6)重排序方法 .................................................................. .. (6)array.reverse() --- 颠倒数组中元素的顺序 (7)array.sort( fn ) ---对数组元素进行排序 (7)数组的固定位置的增删改方法 .................................................................. (8)array.splice(start,deleteCount,value,...) --- 插入、删除或替换数组的元素 . (8)可以复制数组的方法 .................................................................. . (8)array.slice(start,end) --- 返回数组的一部分 (9)array.concat(value,…) --- 连接数组 (9)将数组转化为字符串的方法 .................................................................. . (10)array.join(separator) ---将数组元素连接起来以构建一个字符串 (10)array.toString() ---将数组转换成一个字符串 (11)array.toLocaleString() ---把数组转换成局部字符串 (11)数组的属性:length............................................................... (12)ECMAScript 5 添加的数组方法................................................................... (12)位置方法 .................................................................. (12)迭代方法 --- 不修改原数组 .................................................................. .. (13)归并方法 --- 迭代数组所有项,然后构建一个最终返回的值 (13)数组是复合数据类型(对象类型)的数据,它的数据索引为数字,从0开始,逐一递增,有个length属性,代表数组项的总数。

js中的对象(object:对象和数组)以及对象的常用方法

js中的对象(object:对象和数组)以及对象的常用方法

js中的对象(object:对象和数组)以及对象的常⽤⽅法对象的本质和意义:(object)对象是⼀个整体,⽤于描述⼀个事物的所有的相关信息;内容之间⽤“,”分隔,最后⼀个不加逗号;对象中⼀般有属性(静态)和⽅法(动态,⽅法是作为属性来存储的函数。

):你可以想象成对象就是⼀个⼈,这个⼈的⾝⾼,体型,性格是他本⾝的属性,是静态的;⽽这个⼈喜欢打篮球,喜欢吃东西,这就是他的动作也就是⽅法,是动态的;使⽤{ }去定义⼀个对象,数据由键值对的组合⽅式;值可以是任意数据类型;var obj = { sex : "不详", socre : 100, flag : true, sing : function{ console.log("爱唱歌") }, play : function{ console.log("打游戏") } }对象的操作:访问值:(查)console.log(obj.sex);console.log(obj["socre"]);console.log(obj.sing());添加⼀个属性:(增)obj.hobby = "睡觉";obj["weight"] = “50kg”;obj.dance = function(){ }修改:(改)obj.sex = “⼥”;obj[“socre”] = 99;删除:(删)delete obj.flag;delete obj["sex"]; 访问属性的时候,可以⽤obj.属性或者obj["属性"];需要执⾏⽅法(了解这个⼈)的时候,需要⽤“.”的⽅式去调⽤。

在W3C的官⽹⽂档中提到:如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象:var x = new String(); // 把 x 声明为 String 对象var y = new Number(); // 把 y 声明为 Number 对象var z = new Boolean(); // 把 z 声明为 Boolean 对象请避免将字符串、数值或逻辑声明为对象。

js数组创建方式

js数组创建方式

js数组创建方式1.引言1.1 概述在JavaScript中,数组是一种非常重要的数据结构,用于存储和组织多个数据项。

它可以存储不同类型的数据,如数字、字符串、对象等,并可以根据需要动态调整大小。

数组的创建方式有多种,其中两种常用的方式是直接赋值和使用数组构造函数。

通过直接赋值的方式,我们可以在代码中直接定义一个数组,并将元素逐个赋值到数组中。

这种方式最简单直接,适用于已知元素的情况。

例如,如果我们想创建一个包含1到10这些数字的数组,我们可以这样写:var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];另一种创建数组的方式是使用数组构造函数Array()。

通过传入参数,我们可以指定数组的长度或初始元素。

例如,我们可以创建一个长度为5的数组,并将其所有元素初始化为0,如下所示:var arr = new Array(5); 创建长度为5的空数组arr.fill(0); 将数组中的所有元素都设置为0通过上述两种创建方式,我们可以灵活地创建数组,并根据具体需求初始化数组中的元素。

在接下来的文章中,我们将详细介绍这两种方式的使用方法及其应用场景。

同时,我们还将探讨一些常见的数组操作和技巧,帮助读者更好地理解和使用JavaScript数组。

1.2文章结构1.2 文章结构在撰写本文时,我们将按照以下顺序介绍JavaScript 中创建数组的两种常用方式:直接赋值方式和Array 构造函数方式。

通过对这两种创建方式的详细解释和比较,读者将能够更好地理解和运用数组在JavaScript 中的创建与使用。

在第2节的正文部分,我们将首先介绍直接赋值方式。

这种方式是最简单和直接的创建数组的方法,我们将会详细讨论它的用法和特点。

然后,我们将转向第3节,深入讲解Array 构造函数方式。

这种方式相对来说稍微复杂一些,但它提供了更多的灵活性和功能,我们将详细介绍其使用方法和注意事项。

在第4节的结论部分,我们将对两种创建方式进行总结,并比较它们的优缺点。

js 创建数组的方法

js 创建数组的方法

js 创建数组的方法在JavaScript中,数组是一种用于存储多个值的数据结构。

创建数组的方法有多种,下面将介绍几种常用的方法。

方法一:使用数组字面量数组字面量是一种简单、直接的方法来创建数组。

通过在方括号中用逗号分隔值,即可创建一个数组。

例如:```let fruits = ['apple', 'banana', 'orange'];```上述代码创建了一个名为fruits的数组,其中包含了三个字符串元素:'apple'、'banana'和'orange'。

方法二:使用Array构造函数除了使用数组字面量,还可以使用Array构造函数来创建数组。

Array构造函数可以接受任意数量的参数,每个参数都将成为数组的一个元素。

例如:```let numbers = new Array(1, 2, 3, 4, 5);```上述代码创建了一个名为numbers的数组,其中包含了五个数字元素:1、2、3、4和5。

方法三:使用Array.from方法Array.from方法可以将类似数组的对象或可迭代对象转换为真正的数组。

它接受一个可迭代对象作为参数,并返回一个新的数组。

例如:```let range = Array.from({ length: 5 }, (_, index) => index + 1);```上述代码创建了一个名为range的数组,其中包含了从1到5的整数。

方法四:使用Array.of方法Array.of方法可以将一组值转换为数组。

它接受任意数量的参数,并返回一个新的数组。

例如:```let colors = Array.of('red', 'green', 'blue');```上述代码创建了一个名为colors的数组,其中包含了三个颜色元素:'red'、'green'和'blue'。

JS数组是什么如何创建数组

JS数组是什么如何创建数组

JS数组是什么如何创建数组JavaScript数组是一种数据结构,用于存储和管理一组相关的数据。

数组是有序的,每个元素都可以通过索引访问。

在JavaScript中,数组可以包含任何类型的数据,包括数字、字符串、对象和其他数组。

1.使用数组字面量:最简单的方法是使用方括号创建一个空数组。

例如:```let arr = [];```数组可以在方括号内包含元素,用逗号分隔。

例如,创建一个带有一些数字的数组:```let numbers = [1, 2, 3, 4, 5];```2. 使用Array构造函数:JavaScript还提供了一个Array构造函数,可以用来创建数组。

可以传递任意数量的参数给构造函数,每个参数会成为数组的一个元素。

例如:```let fruits = new Array("apple", "banana", "orange");```3. 使用Array.from(方法:Array.from(方法可以根据已有的数组或类数组对象创建一个新的数组。

它接受一个可迭代对象作为参数,并返回一个新数组。

例如:``````4. 使用扩展操作符(spread operator):扩展操作符(...)可以用来将一个数组解构为单独的元素,并将这些元素放到另一个数组中。

例如:```let arr1 = [1, 2, 3];let arr2 = [...arr1, 4, 5, 6];```arr2将是一个包含arr1元素和新元素的数组。

5. 使用Array.of(方法:Array.of(方法可以将传入的参数创建为一个新数组。

它会根据传入的参数的数量和类型创建数组。

例如:```let arr = Array.of(1, "two", [3, 4], {name: "John"});```无论使用哪种方法创建数组,都可以通过索引访问数组中的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 创建对象<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>//通过对象字面量创建的对象var obj={};//没有任何属性的对象// alert(typeof obj);var obj1={num1:12,num2:34};//有两个属性var obj2={x:obj1.num1,y:obj1.num2+3};// alert(obj2.y);var obj3={"for":'JavaScript关键字',"king smith":'this is king show time','test-attr':'特殊字符必须用放到引号之间',person:{username:'king',age:12,addr:'北京'}};/*----------------------*///通过new创建对象var obj4=new Object();//创建一个空对象,和{}一样var arr=new Array();//创建一个空数组,和[]一样var d=new Date();//创建一个表示当前时间的Date对象var r=new RegExp('js')//创建一个可以进行模式匹配的RegExp对象function Test(){}var func=new Test();function Test1(num1,num2){this.n1=num1;this.n2=num2;}var func1=new Test1(2,3);alert(func1.n2);// alert(func instanceof Test);// alert(typeof func);// alert(typeof Test);// alert(d.prototype);/*----------------------*///通过Object.create()创建对象var obj5=Object.create({x:1,y:2});//可以通过传入参数null来创建一个没有原型的新对象,通过这种形式创建的对象不会继承任何东西,甚至不包括基础方法,像toString()var obj6=Object.create(null);//不继承任何属性和方法//如果想创建一个普通的空对象(像{}或者new Object()创建的对象),需要传入Object.prototypevar obj7=Object.create(Object.prototype);</script></body></html>2 属性操作<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>//属性操作var person={username:'king',age:12,addr:'北京',sex:'男'};//alert(ername+'\n'+person['age']+'\n'+person['addr']+'\n'+person.se x);person.age=23;person['test']='this is a test';delete ername;// alert(ername);// for(var attr in person){// alert(attr);// }//有些时候只能使用[]来访问//如果属性名是不确定的,就必须使用[],它允许我们在程序运行期间通过变量实现相关属性的动态存取var key='age';alert(person[key]);</script></body></html>3 检测属性<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>function foo(){};foo.prototype.z=3;var obj=new foo();obj.x=1;obj.y=2;//通过in检测对象是否有某个属性// alert('z' in obj);// alert(obj.hasOwnProperty('z'));obj.z=5;// alert(obj.hasOwnProperty('z'));// alert(foo.prototype.z);// alert(obj.z);obj.z=undefined;// alert(obj.z);delete obj.z;// alert(obj.z);delete foo.prototype.z;// alert(obj.z);//第一个参数是对象的原型,obj1没有x这个属性var obj1=Object.create({x:1});// alert(obj1.x);// alert(obj1.hasOwnProperty('x'));//属性访问错误//如果属性不存在,则返回undefined// alert(obj1.notExistsProperty);//如果对象不存在,访问这个不存在对象的属性就会报错误// alert(obj2.test);//null和undefined都没有属性var obj2={test:{x:1,y:2}};obj3=obj2.test;delete obj2.test;alert(obj3.y);</script></body></html>4 in检测包含属性<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>//通过in检测对象的自有属性或继承属性中是否包含某个属性var o={x:1};// alert('x' in o);// alert('toString' in o);//o继承toString属性//对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性var o={x:1};// alert(o.hasOwnProperty('x'));// alert(o.hasOwnProperty('toString'));//propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到是自有属性且这个属性的可枚举性为true时它才返回true。

某些内置属性是不可枚举的;一般通过JavaScript代码纯关键的属性都是可枚举的,除非在ECMAScript 5中使用一个特殊的方法来改变属性的可枚举性function Foo(){};Foo.prototype.z=1;var obj=new Foo();obj.x=1;obj.y=2;// alert('x' in obj);// alert('z' in obj);// alert(obj.hasOwnProperty('x'));// alert(obj.hasOwnProperty('z'));// alert(obj.propertyIsEnumerable('x'));// alert(obj.propertyIsEnumerable('z'));//继承来的// alert(Object.prototype.propertyIsEnumerable('toString'));//不可枚举//可以判断某个属性是否是undefiend,但是如果属性存在且值为undefined,此时就不可以了var o={x:1};// alert(o.x===undefined);// alert(o.y===undefined);// alert(o.toString===undefined);//枚举属性//通过for/in遍历对象中所有可枚举的属性(包含自有属性和继承的属性)var obj={x:1,y:2,z:3};// for(p in obj){// alert(p);// }//返回所有自有属性的名称// alert(Object.getOwnPropertyNames(obj));//通过字面量定义存取器属性/*var o={//普通的数据属性data_prop:value,//存取器属性都是成对定义的函数get accessor_prop(){},set accessor_prop(value){}};*/var p={//x,y是普通的可读写的数据属性x:1.0,y:1.0,//r是可读写的存取器属性,它有geter和setterget r(){return Math.sqrt(this.x*this.x+this.y*this.y);},set r(newvalue){var oldvalue=Math.sqrt(this.x*this.x+this.y*this.y);var ratio=newvalue/oldvalue;this.x*=ratio;this.y*=ratio;},get theta(){return Math.atan2(this.y,this.x);}};Object.getOwnPropertyDescriptor(p,'r');// p.x=5;// p.y=10;// alert(p.theta);var random={get octet(){return Math.floor(Math.random()*256);} };Object.getOwnPropertyDescriptor(random,'octet');// alert(random.octet);// alert(Object.getOwnPropertyDescriptor({x:1},'x'));</script></body></html>5 修改属性<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>var o={};Object.defineProperty(o,'x',{value:12,writable:true,enumerable:false,configurable:true});Object.defineProperty(o,'y',{value:'king',writable:true,enumerable:true,configurable:true});Object.defineProperty(o,'z',{value:3// writable:false,// enumerable:false,// configurable:false});// alert(o.x);// alert(Object.keys(o));//x不可枚举,y可枚举// for(var p in o){// alert(p);// }Object.defineProperty(o,'x',{writable:false});o.x=5;o.y=34;// alert(o.y);// alert(o.x);Object.defineProperty(o,'x',{value:56});// alert(o.x);// alert(o.z);o.z=56;// Object.defineProperty(o,'z',{value:32});//不可配置// alert(o.z);//将x从数据属性修改为存取器属性Object.defineProperty(o,'x',{get:function(){return 10;}});// alert(o.x);/*传入Object.defineProperty()的属性描述对象不必包含所有4个特性。

相关文档
最新文档