宝哥软件园

javascript学习笔记(2)数组和对象部分

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

Javascript对象部分

一、基本部分

1.1中的所有变量。JavaScript是除了null和undefined之外的对象。

2.Jscript支持四种类型的对象:内部对象、生成对象和宿主给定的对象(所有BOM和DOM对象都是宿主对象。)和ActiveX对象(外部组件)。

3.Microsoft Jscript提供了11个内部(或“内置”)对象。它们是数组、布尔、日期、函数、全局、数学、数字、对象、正则表达式、错误和字符串对象。

4.对象只是一种特殊的数据。对象有属性和方法。JavaScript是一种面向对象的语言,但是JavaScript不使用类。JavaScript基于原型,而不是类。

5.属性:它是属于特定对象的变量。方法:它是一个只能由特定对象调用的函数。

6.Jscript对象是属性和方法的集合。一种方法是作为对象成员的函数。属性是一个值或一组值(以数组或对象的形式),并且是对象的成员。

7.javascript对象基于构造函数。当构造函数创建一个新对象时,可以说是实例化了一个新对象。属性是构造函数中的变量。

用构造函数实例化的对象:

cat=new Animal();8.Javascript是一种基于对象的语言,你遇到的几乎所有东西都是对象。但是,它不是真正的OOP语言,因为它的语法中没有类。

复制的代码如下:脚本类型=' text/JavaScript '//对象是名称/值对的集合。var browser={//对象是用花括号括起来的Name3360' Firefox '和Kernel:' Gecko'}。/script

复制代码如下://访问属性browser.name//'Firefox'浏览器['内核']//'gecko '

对象(objct)是属性的集合,每个属性都由“名称/值对”组成。js还定义了一个特殊的对象数组——,它是编号值的有序集合。Js还定义了一个特殊的对象——函数,这是一个带有相关可执行代码的对象。它通过调用函数来执行代码,并返回操作结果。

明确JS中的概念:‘基于对象=面向对象’。4.JS中没有Class,但是它取了一个新的名字叫做“原型对象”,所以‘Class=prototype object’

二:类(原型对象)和对象(实例)的区别和联系

1.类(原型对象)是抽象的和概念性的,代表一类事物。2.对象是具体的、实用的,代表具体的事物。3.类(原型对象)是对象实例的模板,对象实例是类的个体。一个常见的误解是数字的字面不是一个对象。这是因为JavaScript解析器中的一个错误,该解析器试图将点运算符解析为浮点数值的一部分。

有很多方法可以让数字的文字值看起来像一个对象。

2.toString();//第二个点可以正常解析。2 .toString();//注意点(2)前的空格。toString();//2首先计算并删除属性

删除属性的唯一方法是使用delete运算符;将属性设置为undefined或null并不会真正删除属性,只会删除属性和值之间的关联。

面向对象JavaScript的三个特点

封装:不考虑内部实现,只考虑函数使用的继承:从已有对象继承新对象多态:所谓多态是指一个引用在不同情况下的多种状态,1。包装

封装就是为了方便,把同类事物的共性(包括属性和行为)放在一个类中。例如,人们可以通过以下方式封装:

人{年龄(属性1)身高(属性2)性别(属性3)

做事(第一幕)走路(第二幕)说话(第三幕)

封装的好处:

封装保护内部数据的完整性;封装使对象重构更容易;弱化模块之间的耦合,提高对象的可重用性;有助于避免命名空间冲突;请看下面的例子:

复制的代码如下: Script Type=' text/JavaScript ' varboy={ };//创建一个空对象boy.name='小明';//根据原型对象的属性分配boy.age=12

var girl={ };Girl.name='小红';女孩年龄=10岁;/script

这是最简单的封装,将两个属性封装在一个对象中。然而,这篇文章有两个缺点。第一,如果生成的例子多,写起来会很麻烦;其次,没有办法看到实例和原型之间的联系。

构造函数模式

为了解决从原型对象生成实例的问题,Javascript提供了一种构造器模式。

所谓的‘构造函数’实际上是一个普通函数,但是这个变量是内部使用的。通过在构造函数上使用新的运算符,可以生成一个实例,并将此变量绑定到实例对象。

例如,男孩和女孩的原型对象现在可以这样写:

复制的代码如下:脚本类型=' text/JavaScript '函数人(姓名、年龄){this。name=namethis.age=年龄;}/脚本

我们现在可以生成实例对象。

复制的代码如下: Script Type=' text/JavaScript ' var boy=new person('小明',' 12 ');Var girl=新人('小红',' 10 ');

alert(boy . name);//小明机警(boy . age);//12/脚本

此时,男孩和女孩将自动包含一个构造函数属性,指向他们的构造函数。复制代码如下:报警(男孩。构造函数==person);//真

alert(girl . constructor==Person);//trueprototype Javascript指定每个构造函数都有一个指向另一个对象的prototype属性。构造函数实例将继承此对象的所有属性和方法。

这意味着我们可以直接在原型对象上定义不变的属性和方法。

复制的代码如下:脚本类型=' text/JavaScript '函数人(姓名、年龄){this。name=namethis.age=年龄;}

人。原型。type=' human

person . prototype . eat=function(){ alert('吃米饭');}/脚本

然后,生成实例:

复制的代码如下: Script Type=' text/JavaScript ' var boy=new person('小明',' 12 ');Var girl=新人('小红',' 10 ');

警惕(男孩.类型);//人类男孩. eat();//吃/写剧本

此时所有实例的type属性和eat()方法实际上是同一个内存地址,指向原型对象,从而提高了运行效率。

警惕(男孩.吃==女孩.吃);//true prototype属性是一个内置属性,它指定对象扩展的构造函数。下面的代码向Animal构造函数添加了一个新的属性大小,这是cat对象的原型属性。通过使用prototype属性,扩展Animal构造函数的所有对象都可以访问size属性

猫=新动物(“猫”、“喵”、“走/跑”);cat . prototype . size=' fat ';在这种情况下,所有动物对象的大小属性都是“胖”。默认情况下,原型是对象的新实例。因为它仍然是一个对象,所以可以向该对象添加新的属性。正如样式是javascript的一个对象一样,您可以在样式之后继续添加属性。

复制代码如下: script type=' text/JavaScript '/*定义了Person类的公共属性*/functionperson (_ name,_ age,_ salary) {//person类,定义为:“this。属性名“这个。Name=_ name//Person类的私有属性定义为:“var属性名”var Age=_ agevar薪资=_薪资;

//定义Person类的公共方法(特权方法),定义为:“this。函数名=function(){ 0.}”这个。show=function(){ alert(' age=' age ' t ' ' salary=' salary ');//允许访问公开方法中类的私有属性}/script

在搜索属性时,对象将首先遍历它自己的属性,如果它不存在,它将继续搜索[[原型]]引用的对象。[[原型]]等等,直到[[原型]].[[原型]]未定义(对象

简单地说,对另一个对象的引用是通过对象的[[Prototype]]保存的,属性是通过这个引用向上搜索的,这就是原型链。

全局窗口对象

JavaScript中的任何全局函数或变量都是窗口的属性。Self对象与window对象完全相同,self通常用于确认其处于当前形式。

窗口的主要对象如下:

JavaScript文档对象JavaScript框架对象JavaScript历史对象JavaScript位置对象JavaScript导航器对象JavaScript屏幕对象的几种常用方法

Valueof()方法:返回指定对象的初始值。split()方法将字符串拆分为一个字符串数组并返回该数组。indexOf()方法返回字符串中指定字符串值的第一次出现。substring()方法用于提取字符串中两个指定下标之间的字符。substr()方法从startPos位置开始的字符串中提取指定数量的字符串。join()方法用于将数组中的所有元素放入字符串中。arrayObject.join(分隔符)reverse()方法用于反转数组中元素的顺序。slice()方法可以从现有数组中返回选定的元素。对象文字

对象文字用于创建包含大量属性的过程。

复制的代码如下:脚本类型=' text/JavaScript ' var company={ name : ' Microsoft ',年龄: 39,员工3360 99000,CEO : ' Nadella ' };/script

这里需要注意的是,属性和属性值之间用冒号分隔(:);多个属性用逗号(,)分隔。一个对象的文字量也可以定义一个方法,只需要在对象的属性上写函数,这是一个匿名函数,只需要写它的方法名()就可以调用它。

复制的代码如下:脚本类型=' text/JavaScript ' vardog={ name : ' husky ',age:2,run : function(){ return ' 123 ';} } alert(dog . run());//如果输入dog.run,后面函数部分的代码/脚本会弹出

Javascript数组部分

1.1。数组对象

Array对象:支持创建任何数据类型的数组。

复制代码如下: arrayobj=new array()arrayobj=new array([size])arrayobj=new array([element 0[,element1 [,[,elementn]]])

定义:var arr=[2,3,45,6];Var arr=新数组(2,4,5,7)定义没有任何区别。[]由于代码短而具有高性能。

使用数组和对象文字:varatest=[];创建数组时,使用数组文字是一个不错的选择。同样,对象文字也可以用来节省空间。以下两行相等,但使用对象文字的行较短:

新对象;//尽量不要使用var oTest={ };//最佳选择,或者var 0Test=[];遍历为了获得遍历数组的最佳性能,建议使用经典for循环。

复制代码如下:VarList=[1,2,3,4,5,10000000];for(var i=0,l=list.lengthI l;I){ console . log(list[I]);}

上面的代码有一个处理,即通过l=list.length缓存数组的长度

数组构造器

因为Array的构造函数在如何处理参数方面有些模糊,所以总是建议使用Array -[]-的字面语法来创建数组。

所以下面的代码会很混乱:

新数组(3,4,5);//结果: [3,4,5]新数组(3) //结果: [],这个数组的长度是3,所以尽量避免使用数组构造函数创建新数组。建议使用数组的字面语法。它们更短更简单,从而增加了代码的可读性。

数组数组的属性

数组数组有三个属性:长度属性、原型属性和构造函数属性

1.1 .长度属性

Length属性指示数组的长度,即数组中元素的数量。因为数组的索引总是从0开始,所以数组的上限和下限是0,长度是-1。与大多数其他语言不同,JavaScript数组的长度属性是可变的,需要特别注意。

2 .原型属性

返回对对象类型原型的引用。原型属性是对象共有的。

对于数组数组对象,使用以下示例说明原型属性的用途。向数组对象添加一个方法,该方法返回数组中最大的元素值。为此,声明一个函数,将其添加到Array.prototype中,然后使用它。

复制代码如下:function array _ max () {var I,max=this[0];for(I=1;长度;I){ if(max this[I])max=this[I];}返回最大值;}

array . prototype . max=array _ max;var x=新数组(1,2,3,4,5,6);var y=x . max();

代码执行后,y将最大值保存在数组x或6中。

3 .构造函数属性

表示创建对象的函数。描述:构造函数属性是所有具有原型的对象的成员。它们包括除全局和数学对象之外的所有JScript本机对象。构造函数属性保存对构造特定对象实例的函数的引用。

例如:

复制代码如下:x=新字符串(' Hi ');If(x.constructor==String) //进行处理(条件为真)。//或函数MyFunc{ //函数体。}

y=新的MyFuncIf(y.constructor==MyFunc)//进行处理(条件为真)。对于阵列:

y=新数组();

数组方法:

附上阵列的思维导图:

更多资讯
游戏推荐
更多+