Javascript学习笔记(二)数组和对象部分

Javascript对象的一部分

1:基本部分

在1.javascript所有变量的对象,除了两个例外为未定义。

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

3。微软Jscript提供了11个内部(或内置)的对象。他们阵中,布尔值、日期、功能、全球、数学、数量、对象、正则表达式,错误,和字符串对象。

4。对象是一种特殊的数据对象有属性和methods.javascript是面向对象的语言,而不使用classes.javascript Javascript是基于原型的,不是基于类。

5。属性是属于特定对象的变量。方法:是只有特定对象才能调用的函数。

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

的7.javascript对象的构造函数,并在构造函数是用来创建一个新的对象,也可以说是实例化一个新的对象,属性在构造函数的变量。

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

猫=新动物();

8、Javascript是一种基于对象(对象)的语言,您遇到的每一件事物几乎都是一个对象,然而,它不是真正的面向对象编程语言,因为它的语法中没有类(类)。

复制代码代码如下所示:



对象是 /值/值集。

var对象是由大括号组成的。

名称:Firefox

内核:壁虎

};





复制代码代码如下所示:

点(.)属性或访问对象{ }

browser.name / /火狐

浏览器



客体(对象)是一组属性(Property)。每个属性由名称值对组成。JS还定义了一个特殊的对象数组,它是一组有序的编号values.js还定义了一种特殊的对象的功能,即具有可执行代码与它关联的对象。它通过调用函数执行代码并返回操作结果。

澄清概念:

没有类(级)在对象-面向对象型4.js JS,但它需要一个新的名字叫做原型对象,所以类原型对象

二:(原型对象)和对象(实例)# # #之间的差异

1。类型(原型对象)是抽象的,是一个概念,代表一类事物。

2。对象是特定的,实用的,代表特定的事物。

3。类(原型对象)是对象实例的模板,对象实例是类的一个个体。

一个常见的误解是字符数(文字)不是一个对象,这是由于Javascript解析器中的一个错误,它试图解析浮点运算符作为浮点数字面值的一部分。

有很多方法可以使数字的脸看起来像一个物体。

(2。toString); / /二点可以正常解析

2(ToString);在盒子前面 / /注数

(2),ToString(2); / /计算

删除属性

删除属性的惟一方法是使用删除操作符。将属性设置为未定义或NULL并不真正删除属性,但只删除属性和值之间的相关性。

Javascript面向对象的三大特性

封装:不考虑内部实现,只考虑功能性使用。

继承:从已有对象继承一个新对象。

多态性:所谓多态性是指在不同情况下被引用的各种状态。

1。封装

封装是将属于同一类别的公共属性(包括属性和动作)集成到一个类中,这样就可以方便地使用它。例如,人类可以用以下方式封装。

{人

年龄(属性1)

高度(属性二)

性(属性三)

工作(其中之一)

步行(两种行为)

谈话(三的行为)

}

封装的好处:

封装保护内部数据的完整性;

封装使对象的重构更容易;

模块之间的耦合被削弱,以提高对象的可重用性。

帮助避免名称空间冲突;

请看下面的例子:

复制代码代码如下所示:



var男孩= {;} /创建一个空对象

boy.name =鲍勃; / /按照原型对象属性赋值

boy.age = 12;

var女孩{ };

girl.name =小红;

girl.age = 10;





这是封装对象中两个属性的最简单封装。首先,如果生成多个实例,写起来会非常麻烦。二,示例和原型之间没有办法。

构造函数模式

为了解决从原型对象生成实例的问题,Javascript提供了构造函数(构造函数)模式。

所谓的构造函数实际上是一个普通函数,但是这个变量在内部使用。使用构造函数的新操作符,可以生成一个实例,这个变量绑定到实例对象。

例如,男孩和女孩的原型对象现在可以用这种方式编写:

复制代码代码如下所示:



功能人(姓名,年龄){

this.name =名称;

this.age =年龄;

}





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

复制代码代码如下所示:



var男孩=新的人(肖明

新女孩(小红帽)

警报(男孩,名字);肖明

警报(男孩,年龄);12





在这一点上,男孩和女孩自动包含构造函数属性,指向构造函数。

U3000

复制代码代码如下所示:

警报(boy.constructor = =人); / /真的

Alert (girl.constructor = = Person); //true



Javascript原型模式指定每个构造函数都有一个原型属性,指向另一个对象,这个对象的所有属性和方法都将由构造函数的实例继承。

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

复制代码代码如下所示:



功能人(姓名,年龄){

this.name =名称;

this.age =年龄;

}

person.protype.type =人;

person.protype.eat =函数(){

警惕(吃米饭);

}





然后,创建一个实例:

复制代码代码如下所示:



var男孩=新的人(肖明

新女孩(小红帽)

警报(男孩,类型);

(男孩吃东西);





在这一点上,所有实例的类型属性和吃()方法实际上都是相同的内存地址,指向原型对象,从而提高了操作的效率。

警报(boy.eat = =女孩吃); / /真的

原型属性是一个内置属性,它指定对象扩展的构造函数。

下面的代码为动物构造函数添加了一个新的属性,大小,这是猫对象的原型属性,通过使用原型属性,扩展动物构造函数的所有对象都可以访问size属性。

猫=新动物(猫)

cat.prototype.size =脂肪;

在这种情况下,动物对象的所有大小属性都是胖的,原型是对象的一个新实例,它仍然是一个对象,因此您可以向对象添加新属性。

复制代码代码如下所示:



类的定义

功能的人(_name,_age,_salary){

类的公共属性,定义类的公共属性的方法是。属性名称

这名_name;

类的私有属性,定义类私有属性的方法是:var属性名

VaR的年龄_age;

工资= _salary VaR;

定义类人员/公共方法(特权方法)、开放类定义

是:这个函数名=函数(。}){…

这个=函数(){

警报(年龄=+年龄+ +++工资+工资);在私有财产中的开放存取方法中允许

}





当一个对象查找属性时,它首先遍历它的属性。如果没有,它将继续找到{ } }引用的对象。如果没有其他内容,它将继续寻找{原型}引用的对象,然后类推,直到原型}…{原型}未定义(对象的原型}未定义)。

简单地说,另一个对象的引用是通过对象的{原型}保存的,而属性的查找是通过这个引用进行的,也就是原型链。

全局窗口对象

Javascript中的任何全局函数或变量都是窗口的属性。

自对象与窗口对象完全相同,而自通常用来确认它是在当前窗体中。

窗口的主要对象如下:

Javascript文档对象

Javascript框架对象

Javascript的历史对象

Javascript对象的位置

Javascript导航对象

Javascript的屏幕对象

常见的几种方法

valueOf()方法返回指定对象的原始值

拆分()方法将字符串划分为字符串数组,并返回数组。

indexOf()方法返回的字符串中第一次指定字符串的位置。

substring()方法用于从字符串中提取字符之间的两个指定下标。

substr()方法提取指定个数的字符串从让位置的字符串。

联接()方法用于将数组中的所有元素放入字符串中。

ArrayObject.join(分离器)

反向()方法用于反转数组中元素的顺序。

切片()方法可以从现有数组返回所选元素。

对象字面量

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

复制代码代码如下所示:



var公司{ {

姓名:微软

年龄:39,

雇员人数:99000人,

首席执行官:纳德拉

};





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

复制代码代码如下所示:



var狗{ {

姓名:哈士奇

年龄:2岁,

运行:函数(){

返回123;

}

}

警报((狗跑)); / /如果你进入dog.run,所以它会弹出功能的代码部分的背后





Javascript数组的一部分

1、数组对象

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

复制代码代码如下所示:

arrayobj =新的数组()

arrayobj =新的数组({大小})

arrayobj =新的数组({ element0 Element1 { {,…{,}}}}}元件



定义:var arr = { 2,3,45,6 };var arr =新的数组(2,4,5,7)

由于代码很短,高定义的性能没有什么区别。

数组和对象文字的使用:VaR测试= {};创建一个数组,使用数组标识符是一个很好的选择;同样,对象的文字也可以用来节省空间。下面两行是平等的,但使用对象是越短:

VaR的抗议=新对象; / /尝试做

VaR的抗议= {}; / /最好的选择,或无功0test = { };

为了达到遍历数组的最佳性能,建议使用经典的for循环。

复制代码代码如下所示:

var列表{ 1, 2, 3,4, 5,…100000000 };

对于(var i = 0,L = list.length;i < L;i++){

console.log(名单{我});

}



上面的代码有一个协议,缓存的数组长度L = list.length。

数组构造器

因为数组的构造函数关于如何处理一些参数,所以总是建议使用一个数组,准备接受两个过程,即字面语法——创建数组。

因此下面的代码将是令人费解的:

新数组(3, 4, 5);结果:{ 3, 4, 5 }

新数组(3)结果:{ },数组长度为3

您应该尽量避免使用数组构造函数来创建一个新数组。建议使用数组的字面语法。它们更短而简洁,从而增加了代码的可读性。

阵列的性质

数组数组的3个属性:长度属性、原型属性和构造函数属性。

1.length属性

长度属性表示数组的长度,在它的元素的个数。因为数组的索引总是开始0,数组的上下界:分别为0和length-1,不像大多数其他语言,对Javascript数组的长度属性是可变的,这一点需要特别注意。

2.prototype属性

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

对于数组数组对象,使用以下示例演示了原型属性的使用。

添加到数组对象的方法返回数组中的最大元素值。为此,声明一个函数,将它添加到Array.prototype,并用它。

复制代码代码如下所示:

array_max()函数

{

var i,max =这个{ 0 };

为(i = 1;i < this.length;i++)

{

如果(最大<这个{ })

马克斯=这个{ };

}

返回最大值;

}

阵列,最大= array_max原型;

var x =新的数组(1,2,3,4,5,6);

var y = x.max();



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

3.constructor属性

一个函数来表示一个对象的创建。描述:构造函数属性是所有原型对象的一个成员,包括所有的固有的Jscript对象以外的全球和数学对象构造函数属性持有参考,构建一个具体的对象实例的功能。

例如:

复制代码代码如下所示:

x =新字符串(嗨);

如果(x.constructor = =字符串) / /处理(条件是真的)。



功能MyFunc {

函数。

}

Y =新myfunc;

如果(y.constructor = = myfunc) / /处理(条件是真的)。



对于数组:

y =新数组();



阵列的方法:



附有一张数组的思维图。