`

javascript面向对象技术基础

阅读更多
var emptyObject1 = {};           //创建空对象     
var emptyObject2 = new Object(); //创建空对象     
var person = {"name":"sdcyst",     
           "age":18,     
           "sex":"male"};     //创建一个包含初始值的对象person     
alert(person.name);              //sdcyst     
alert(person["age"]);            //18     
  
var person = {};     
person.name = "sdcyst";     
person["age"] = 18;     
alert(person.name + "__" + person.age); //sdcyst__18     
      
var _person = {name:"balala","age":23}; //在构建一个对象时,属性的名字可以不用引号来标注(name),     
                    //但是仍旧是一个字符串类型.在访问的时候[]内仍旧需要引号     
alert(_person["name"] + "__" + person.age); //balala__23     
alert(_person[name]);                //undefinied    

  


var name = {"name1":"NAME1","name2":"NAME2","name3":"NAME3","name4":"NAME4"};     
   var namestring = "";     
   for(var props in name) {  //循环name对象中的属性名字     
        namestring += name[props];     
   }     
   alert(namestring);  //NAME1NAME2NAME3NAME4     
        
   namestring = "";     
   for(var i=0; i<4; i++) {     
       namestring += name["name"+(i+1)];     
   }     
   alert(namestring);  //NAME1NAME2NAME3NAME4    

 


delete操作符可以删除对象中的某个属性,判断某个属性是否存在可以使用"in"操作符.
  
var name = {"name1":"NAME1","name2":"NAME2","name3":"NAME3","name4":"NAME4"};     
   var namestring = "";     
   for(var props in name) {  //循环name对象中的属性名字     
      namestring += name[props];     
   }     
   alert(namestring);  //NAME1NAME2NAME3NAME4     
        
   delete name.name1;  //删除name1属性     
   delete name["name3"];  //删除name3属性     
   namestring = "";     
   for(var props in name) {  //循环name对象中的属性名字     
       namestring += name[props];     
   }     
   alert(namestring);  //NAME2NAME4     
        
   alert("name1" in name); //false     
   alert("name4" in name); //true    



对象的constructor属性
每一个javascript对象都有一个constructor属性.这个属性对应了对象初始化时
的构造函数(函数也是对象).

var date = new Date();  
   alert(date.constructor);  //Date  
   alert(date.constructor == "Date");  //false  
   alert(date.constructor == Date);  //true 


数组

     我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待创建数组可以用"[]"操作符,或者是用Array()构造函数来new一个.
var array1 = [];  //创建空数组     
   var array2 = new Array();  //创建空数组     
   array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //     
   alert(array1[2][1]);  //4   访问数组中的数组元素     
   alert(array1[3].name1); //NAME1 访问数组中的对象     
   alert(array1[8]);   //undefined     
   array2 = [,,];  //没有数值填入只有逗号,则对应索引处的元素为undefined     
   alert(array2.length); //3     
   alert(array2[1]);     //undefined    

   用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,   以后可以再给他们赋值.但是由于javascript中的数组的长度是可以任意改变的,   同时数组中的内容也是可以任意改变的,因此这个初始化的长度实际上对数组没有 任何的约束力.对于一个数组,如果对超过它最大长度的索引赋值,则会改变数组的长度,同时会对没有赋值的索引处赋值undefined,看下面的例子.

var array = new Array(10);     
   alert(array.length);   //10     
   alert(array[4]);       //undefined     
   array[100] = "100th";     
    //这个操作会改变数组的长度,同时将10-99索引对应的值设为undefined     
   alert(array.length);   //101     
   alert(array[87]);      //undefined    




   可以用delete操作符删除数组的元素,注意这个删除仅仅是将数组在该位置的元素设为undefined,数组的长度并没有改变.我们已经使用过了数组的length属性,length属性是一个可以读/写的属性,也就是说我们可以通过改变数组的length属性来.任意的改变数组的长度.如果将length设为小于数组长度的值,则原数组中索引大于length-1的值都会被删除.如果length的值大于原始数组的长度,则在它们之间的值设为undefined.


var array = new Array("n1","n2","n3","n4","n5");  //五个元素的数组     
   var astring = "";     
   for(var i=0; i<array.length; i++) {           //循环数组元素     
        astring += array[i];     
   }     
   alert(astring);       //n1n2n3n4n5     
   delete array[3];                   //删除数组元素的值     
   alert(array.length + "_" + array[3])  //5_undefined      
   array.length = 3;    //缩减数组的长度     
   alert(array[3]);     //undefined     
   array.length = 8;    //扩充数组的长度     
   alert(array[4]);     //undefined    

  

  对于数组的其他方法诸如join/reverse等等,在这就不再一一举例.

  通过上面的解释,我们已经知道,对象的属性值是通过属性的名字(字符串类型)来获取,  而数组的元素是通过索引(整数型 0~~2**32-1)来得到值.数组本身也是一个对象, 所以对象属性的操作也完全适合于数组.

var array = new Array("no1","no2");     
    array["po"] = "props1";     
    alert(array.length);   //2     
    //对于数组来说,array[0]同array["0"]效果是一样的(?不确定,测试时如此)     
    alert(array[0] + "_" + array["1"] + "_" + array.po);//no1_no2_props1  
分享到:
评论

相关推荐

    javascript 面向对象技术基础教程第1/2页

    JavaScript面向对象技术是该编程语言非常核心的一个部分,它允许开发者使用对象来组织代码,并模拟现实世界中的实体。在JavaScript中,几乎所有的东西都可以被视为对象,包括基本数据类型如数字和字符串。对象包含...

    [推荐]javascript 面向对象技术基础教程

    本文将深入浅出地讲解JavaScript中的面向对象技术基础,包括对象、数组、函数、类、构造函数以及原型等方面的知识。 首先,让我们来看看对象和数组。在JavaScript中,对象是键值对的集合,这些键通常是字符串,对应...

    JAVASCRIPT 面向对象编程精要

    本文介绍了JavaScript面向对象编程的基本概念和技术细节,包括变量和对象的基础用法、函数的作用以及如何通过封装和继承来构建复杂的对象层次结构。JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种...

    javascript面向对象编程.pdf

    总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...

    JavaScript面向对象编程指南.pdf

    通过以上内容,我们可以了解到JavaScript面向对象编程的基础知识以及它的核心概念。在实际应用中,理解并熟练运用这些知识点,将有助于开发出更加结构化和可维护的代码。同时,参与Java学习群和听讲大神的课程将是一...

    javascript面向对象编程(中文).pdf

    ### JavaScript面向对象编程知识点概述 #### 一、现代JavaScript编程概览 - **JavaScript的演进**:自诞生以来,JavaScript经历了从一个简单的脚本语言到现今被广泛应用于构建复杂应用的强大编程语言的过程。它的...

    JavaScript面向对象技术实现树形控件

    JavaScript面向对象技术在实现树形控件中扮演着至关重要的角色。树形控件是一种用于展示层次型数据的用户界面元素,它具有扩展和折叠功能,可以在有限的空间内清晰地展示大量的信息,使得数据间的层级关系一目了然。...

    《JavaScript内核系列》和《JavaScript面向对象基础》

    《JavaScript内核系列》和《JavaScript面向对象基础》这两本书是深入理解JavaScript编程的重要资源。JavaScript,作为一种广泛应用于Web开发的脚本语言,其内核和面向对象特性是开发者必须掌握的基础知识。以下是对...

    js面向对象技术基础

    JavaScript是一种基于原型的面向对象编程语言,它的面向对象技术基础包括对象、数组、原型、作用域、闭包以及模拟私有变量等核心概念。下面将详细介绍这些知识点。 **1. 对象与数组** 在JavaScript中,对象是键值...

    JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf

    从所提供的文件信息中,我们可以总结以下几点与“JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf”相关的重要知识点。 首先,该文件提到的书籍是关于JavaScript面向对象编程的,面向对象编程...

    JavaScript面向对象程序设计

    在JavaScript面向对象编程中,随着Web2.0和Ajax技术的普及,JavaScript的角色从简单的表单验证扩展到了复杂的数据交互和页面动态更新。采用面向对象的编程风格可以使代码结构更加清晰,便于管理和维护。例如,...

    javascript 经典面向对象设计

    标题“JavaScript经典面向对象设计”指出了本书的主要内容是关于如何使用面向对象编程(OOP)原则和技术来编写高质量、可扩展且可重用的JavaScript应用程序及库。描述中提到本书相比其他中文资料更为清晰,深入到...

Global site tag (gtag.js) - Google Analytics