`

Javascript 第四天

阅读更多
上篇文章讲了js中的变量,表达式,和运算符 还有一些 js 语句.
这章我们来探讨js中的对象和数组。
比较难哦。做好心里准备吧。。。。。。 深呼吸。。。

1 , for  /  in :
一种遍历(枚举)对象属性的方法,可以循环我们呢事先不知道的属性。
它可以枚举处用户定义的所有属性,但却不能枚举出某些预定义的属性和方法。
不能枚举的属性通常是继承的属性

删除一个对象的属性:
delete book.width ;
从对象中移除了属性,在删除之后,用for/in将不会枚举该属性,并且用width in book 也检测不到该属性。

for/in 的另一个重要的用途就是跟关联数组一起使用:(如果忘记关联数组的定义,可以看前面的章节。)
for(stoct  in  port ){
    value +  = get_value(stoct)  *   port[stoct]  ;
}

2 , 通用的Object属性和方法:
1):constructor属性:
每个对象都有这个属性,他引用了初始化这个对象的构造函数。
比如:
  var d =new Date();  //使用Date()构造函数,创建一个对象 d;
   d.constructor ==Date;   //true    //属性d.constructor引用 Date ;

这个属性有助于确定一个对象的类型;
比如:
我们想确定一个值的类型是否是Date 类型:
If((typeof o==”object” )&& (o.constructor==Date)){
//  首先看是否是对象,然后看是否引用Date
}

上面的代码也可以写成:
If((typeof o==”object” )&& (o   instanceof   Date)){
//  instanceof 运算符 来检测o.constructor 属性的值。
}

3 , toStirng()和toLocaleString()方法:
1):toLocaleStirng() 返回对象的一个本地化字符串。
toString和toLocaleString一般都返回相同,但在子类中,有点区别:
比如:
Array , Date和Number都定义了返回本地化的值的toLocaleString()方法.

4 , hasOwnProperty()和propertyIsEnumerable()方法:
1):hasOwnProperty
var a = { x : 1  , y : 2};
var k =a.hasOwnProperty("x");
alert(k)  //true
alert( Math.hasOwnProperty("z") );//false
alert( Math.hasOwnProperty("cos") );//true 
注:Math,cos() : 以弧度为单位计算并返回指定角度的余弦值。
propertyIsEnumerable()跟返回的结果跟hasOwnProperty()相同;

4 ,isPrototypeOf()方法:
如果方法所属的对象是参数的原型对象。
var a = { x : 1  , y : 2};
var k1= Object.prototype.isPrototypeOf(a);       //  o.constructor = Object
var k2= Object.prototype.isPrototypeOf(Function);   //  Function.constructor = Object
alert(k1) //true
alert(k2) //true

5,数组:
1)创建数组:
数组直接量:
var es = [ ] ;
复杂点 var es = [ [ 1, {x:1   , y : 2}] , [ 2, {x:3  , y : 4}]  ];
还有一种方式:使用Array() 构造函数:
    V1 :  无参数:
       var a  = new Array();
空数组,和 var a =[ ] 相等 ;

   V2 : 多个参数:
     var  a = new Array( 1,2,3,”tt”) ; //可以看出直接量定义 简单些。

   V3 : 1个数字参数:
   var  a  = new Array (3);
  具有3个元素的数组,每个元素的值为 undefined ;

6, 数组的下标(索引):
大小   :  0  <=  下标 <  2的32次方 –  1  ;
如果不在范围内,js会讲它转换为一个字符串,作为对象属性的名称;
而不是作为数组的下标;
比如:
   a[-1.2] = “test”  ;   //  等价于   a[“-1.2”]  =”test”  ;
//代码解释: 创建一个名为 “-1.2”的属性,而不是定义一个 新的数组元素。

7, 添加数组的内存使用:
   a[10] =  “test” ; //添加新的元素
内存的使用:
比如:
a[0] = “1” ;
a[10] =” 10” ;
那么js值给下标为0 和10的元素分配内存,中间的9个元素不被分配;

注:数组也可以添加到对象中;
比如;
var a = new Circle(1,2,3);
a[0]= “test” ;
这个例子定义了一个名为” 0 “的新对象属性。
只将数组元素添加到一个对象中并不会使它成为数组。

8, 删除数组:
var a = [1,2];
delete a[0];
alert(a[0])  //输出 undefined
alert(a[1])  //输出 2
由例子可以看出,delete删除其实没有真正删除,只不过把元素设置为undefined;

如果要真正删除,可以使用Array.shift(),等方法。
比如:
var a = [1,2];
delete a[0];
alert(a[0])  //输出 undefined
alert(a[1])  //输出 2
a.shift();  //删除数组的第一个元素
alert(a[0])  //输出 2
alert("length:"+a.length);
alert(a[1])  //输出 undefined ;   1已经被删除了,其实数组已经的长度只有 1 了;

9,数组的length:
a[49] = “a”;
// 那么这个数组的长度是  50  ;

length属性经常用于遍历数组元素;
比如:
   var  a  = [“a” , “b “ ,”c” ];
for(var i = 0 ; i< a.length ; i++){
alert(a[i]);
}

这个是在假定元素是连续的,如果不是这种情况:
必须检测每个元素是否被定义  : 比如:
for(var i = 0 ; i< a.length ; i++){
if(a[i]){
alert(a[i]);
}
}

多维数组: a[i][j] ;


10,数组的一些方法:
1):join() 方法:
把一个数组的所有元素都转换成字符串。
比如:var  a  = [1,2,3];
    var s =   a.join();   // 输出 s==1,2,3
当然也可以 指定一个分隔符;
比如;
   s = a.join(“,”); 
这个方法跟String.split()相反, split()将一个字符串分割成几个片段来创建数组;

2):reverse () 方法:
把一个数组颠倒。
     var  a   = new Array(1,2,3);
a.reverse();
var s  =  a.join();  //s == “3,2,1”

3):sort() 方法:
排序
♂:如果不给传参数,那么按照字母顺序对数组元素排序。
var a = new Array(“ee”,”df”,”b”);
a.sort()
var s = a.join(“, ”);  // s ==  “b, df, ee”
♂:如果传参数:
比如:
var a = [33,4,1111,222]
a.sort(); // 排序 :  1111 ,222 ,33,4
a.sort(function(x,y){
       return x-y;
});
var s  = a.join(); //输出  4, 33,222,1111

//可以从例子看出,排序如果x > y ,那么第一个参数就排在第2个参数后,
比如;  1111 ,222   -     1111-222>0  - 则  222 , 1111
另外注意下 字母排序:因为js是区分大小写,所以排序的时候,把字符统一成大写或者小写,再排序。

4):concat() 方法:
var  a  = [1,2,3];
a= a.concat(4, [5,6],7);
a=a.join(); //输出 1,2,3,4,5,6,7
alert(a)
注意:
如果是数组里面还有数组 ,就不能展开了。
比如:
var a  = [1,2,3];
a = a.concat(4,[5,[6,6]],7);
alert(a);  //这个看不出来
a = a.join("|");
alert(a);  //分割后,注意有个逗号

-------------------------------------

var  c  = [1,2,3];
var  d  =new Array(1,2,3);
alert(c); //1,2,3
alert(d); //1,2,3
//之所以不输出Object ,是因为
//数组是一个具有额外功能层的对象.
//我们记住他的特殊性。

5):slice() 方法:
返回数组某一个片段。跟字符串的substring方法类似。

6):splice() 方法:
首先他跟 slice 方法 只有一个字母的差别,不过用处完全不同。
他可以用来删除。
var a  = [1,2,3];
a = a.splice(0,2);
alert(a);  // 输出 1, 2
a = a.splice(1,2);
alert(a);  //  输出 2  。 如果是  a = a.splice(0 , 1) ;  输出  1
a = a.splice(1,2);
alert(a);  //  没有删除任何数组 , 输出 空 数组

他也可以插入数组。具体方法:
    var array1 = new Array("1","2","3","4");
    array1.splice(1,0,"5");//在 第2个元素后面,插入 5 ; 如果第2个参数为0,则不删除。
    document.write(array1+"<br>"); //输出  1, 5 ,2 ,3,4
    array1.splice(2,3,"7","8")  // 删除 第3个的 元素后的 3个元素。也就是 第3个,第4个,第5个元素。然后在这个位置上插入7,8
    document.write(array1);//输出  1, 5 ,7,8
注意:和concat()不同,splice并不将他插入的参数展开。也就是如果插入一个数组,他就是插入数组本身,还不是数组的元素。
而concat()插入数组的话,就会把数组展开,插入数组中的元素,不过当插入的数组里
还有数组的时候,就不会展开了。


7):push() 方法和pop()方法:
push(): 将一个或者多个数组 附加到数组的尾部。
pop() : 删除数组的最后一个元素。
var array1 = new Array("1","2","3","4");
    array1.push("5");
    document.write(array1+"<br>"); //输出  1, 2 ,3 ,4,5
    array1.pop() 
    document.write(array1);//输出  1, 2 ,3 ,4

8):unshift() 方法和shift ()方法:
跟push和pop唱反调。。。
unshift (): 将一个或者多个数组 附加到数组的头部。
shift ():删除数组的第一个元素。
分享到:
评论

相关推荐

    javascript宝典 第四版

    本书是javascript经典图书《javascript宝典》第四版的中文版,是学习javascript编程的第一书籍。翻译比较好

    JavaScript基础第06天笔记.md

    # JavaScript基础第06天笔记知识点详解 ## 1. 内置对象 ### 1.1 内置对象概述 在JavaScript中,对象被分为三种类型:自定义对象、内置对象以及浏览器对象。前两者属于ECMAScript的基础部分,而浏览器对象则是...

    《JavaScript宝典(第四版)》.

    《JavaScript宝典(第四版)》.《JavaScript宝典(第四版)》.

    JavaScript第四章的答案

    总的来说,"JavaScript第四章的答案"涵盖了从基本语法到高级概念的广泛内容。这份资料详尽地解答了这一章可能出现的所有问题,无论你是初学者还是有一定经验的开发者,都会从中受益匪浅。务必仔细研读并实践,这将对...

    javascript_权威指南第四版

    javascript_权威指南第四版.pdf

    小白学JavaScript的第四天

    小白学JavaScript的第四天

    JavaScript权威(第四版)

    《JavaScript权威指南(第四版)》是一本深受欢迎且备受推崇的书籍,它为读者提供了全面而深入的JavaScript知识,适合从初学者到高级开发者的所有层次。 这本书详细介绍了JavaScript的核心语法,包括变量、数据类型...

    JavaScript 权威指南(第四版)

    《JavaScript权威指南(第四版)》是一本深受程序员喜爱的经典教程,专为深入理解JavaScript语言而设计。本书针对JavaScript 1.5版本进行了全面的修订和更新,旨在帮助读者掌握这个强大且广泛应用的脚本语言。 ...

    JavaScript权威指南第四版(中文版)

    《JavaScript权威指南第四版(中文版)》是深入理解JavaScript编程语言的重要参考资料,它全面而详细地涵盖了JavaScript的核心概念和技术。这本书旨在为开发者提供一份权威、详尽且准确的JavaScript学习指南,帮助...

    javascript参考教程javascript高级教程javascript权威指南(第四版)

    《JavaScript权威指南(第四版)》则是一本详尽的JavaScript学习资料,它涵盖了语言的最新发展,例如ES6及后续版本引入的新特性。这里你可以了解到箭头函数、解构赋值、类与继承、模板字符串、迭代器和生成器等。...

    JavaScript 权威指南(第四版).rar

    《JavaScript权威指南(第四版)》是一本深受程序员喜爱的经典教程,它全面、深入地探讨了JavaScript这门广泛应用于Web开发的重要脚本语言。这本书针对的是JavaScript的第四版,也称为ECMAScript 5,虽然现在最新的...

    Javascript+JQuery--第4章.ppt

    Javascript+JQuery--第4章.ppt )

    第4节 JavaScript操作符.rar

    第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript操作符.rar第4节 JavaScript...

    JavaScript 权威指南(第四版).pdf

     第4章 表达式和运算符60  4.1 原始表达式60  4.2 对象和数组的初始化表达式61  4.3 函数定义表达式62  4.4 属性访问表达式63  4.5 调用表达式64  4.6 对象创建表达式64  4.7 运算符概述65  4.8 算术表达式...

    JavaScript 权威指南(第四版)高清版本

    JavaScript 权威指南(第四版)高清版本,非常清楚,中文版本的哦

    第4章 JavaScript中的函数

    第4章 JavaScript中的函数

    21天学通JavaScript(第2版)

    第三篇讲解的是javascript的高级技术,主要讲解了javascript与xml技术、正则表达式、ajax基础、ajax高级应用、javascript与插件和javascript的调试与优化等。最后一篇为综合案例篇,用一个完整的例子讲解了如何使用...

    JavaScript权威指南第四版(高清版)

    《JavaScript权威指南第四版》正是为了深入理解这一语言而编写的权威读物。这本书结合了多位经验丰富的JavaScript开发工程师的智慧,旨在为读者提供全面、准确且深入的JavaScript知识。 在本书中,首先会介绍...

    JavaScript.宝典(第四版).rar

    宝典(第四版).rar )( JavaScript.宝典(第四版).rar )( JavaScript.宝典(第四版).rar )( JavaScript.宝典(第四版).rar )( JavaScript.宝典(第四版).rar )( JavaScript.宝典(第四版).rar )( JavaScript....

Global site tag (gtag.js) - Google Analytics