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 =新数组();
阵列的方法:
附有一张数组的思维图。