本周开始了JS的学习,以下是学习过程中记录的部分重点。
1.如何插入JS
(1)
在<script></script>之间写入JS代码,<script type="text/javascript">表示在<script></script>之间的是文本类型( text ) , javascript是为了告诉浏览器里面的文本是属于JavaScript语言。
(2)
<script> 标签用于定义客户端脚本,比如 JavaScript。script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件。必需的 type 属性规定脚本的 MIME 类型(描述消息内容类型的因特网标准)。脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器(一种电脑程序),将其一条条的翻译成机器可识别的指令,并按程序顺序执行。
2.变量
(1)变量名的命名规则
从编程角度讲,变量是用于存储某种/某些数值的存储器。变量必须使用字母、下划线(_)或者美元符($)开始。然后可以使用任意多个英文字母、数字、下划线(_)或者美元符($)组成。不能使用JavaScript关键词与JavaScript保留字。
(2)
变量名要先声明再赋值,可以重复赋值。在JS中区分大小写,如变量mychar与myChar是不一样的,表示是两个变量。变量虽然也可以不声明,直接使用,但不规范,需要先声明,后使用。
3.近似C语言
(1)函数
先定义(function),再调用。
(2)document.write()可用于直接向 HTML 输出流写内容。简单的说就是直接在网页中输出内容。
4.alert
alert() 方法用于显示带有一条指定消息和一个 OK 按钮的警告框。
5.函数
(1)限制:不能把函数或参数命名为eval或arguments,不能出现两个命名参数同名的情况
(2)使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们,例如arguments[0]为函数第一个参数的值。
(3)函数实际上是Function类型的实例,因此函数也是对象,而这一点正是JavaScript最具有特色的地方。由于函数是对象,所有函数也拥有方法,可以用来增强其行为。
6.函数和方法的区别
(1)函数(function) 函数是一段代码,需要通过名字来进行调用。它能将一些数据(函数的参数)传递进去进行处理,然后返回一些数据(函数的返回值),也可以不返回数据。
(2)方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。
(3)当将函数和对象和写在一起时,函数(function)就变成了方法(method)。
7.错误处理之try-catch语句
function test(){
try{ return 2;
} catch (error){
return 1;
} finally {
return 0;
}
}
try: 所有可能抛出错误的代码。
catch:错误处理的代码。
finally:无论代码出错与否,都会执行finally子句。
当发生错误时,就会退出代码执行过程,然后接着执行catch块。此时,catchc块会接收到一个包含错误信息的对象。
8.只有对象才会调用方法,不管字面量形式还是 new 运算符形式,都可以使用它的内置方法。并且Boolean 和 Number 特性与 String 相同,三种类型可以成为基本包装类型。PS:在使用 new 运算符创建以上三种类型的对象时,可以给自己添加属性和方法,但我们建议不要这样使用,因为这样会导致根本分不清到底是基本类型值还是引用类型值。
9.(1)函数是语句序列的打包;(2)方法是对 对象成员的操作,由函数实现;(3)接口是对方法的抽象和概括,由方法实现具体的接口
10.
js中的instanceof运算符
概述
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
描述
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
11.
原型是神马? 原型就是公用的方法或者属性,这么理解最简单, 当然:
1、prototype本质上还是一个JavaScript对象;
2、每个函数都有一个默认的prototype属性;
3、通过prototype我们可以扩展Javascript的内建对象
constructor是默认指向创建当前对象的构造函数, 但是这里面有一些坑要注意, 比如你的原型prototype被改了, 实例的constructor就变了 。(下一点关于constructor)
12.constructor属性
(1)定义和用法:constructor属性返回对创建此对象的数组函数的引用。
(2)语法:object.constructor
13.Array对象
(1)Array对象用于在单个的变量中储存多个值
(2)创建Array对象的语法
new Array();
new Array(size);
new Array(element0,element1,...elementn);
(3)参数
参数size是期望的数组元素的个数,返回的数组length字段将被设为size的值。
参数element0,element1...,elementn是参数列表,当使用这些参数来调用构造函数Array()时,新创建的数组的元素就会被初始化为这些值,它的length字段也会被设置为参数的个数。
14.(1)函数声明提升:
在执行代码之前会先读取函数声明(可以把函数声明放在调用他的语句后面)
(2)匿名函数(拉姆达函数):function关键字后面没有标识符,name属性是空字符串。
(3)递归:arguments,callee是一个指向正在执行的函数的指针,因此可以用它来实现对函数的递归调用(非严格模式)。严格模式可用命名函数表达式来达成相同的效果。
15.new关键字!!!(常用但是最初理解的不够清楚)
在JavaScript中,使用new关键字后,意味着做了如下四件事情:
- 创建一个新的对象,这个对象的类型是object;
- 设置这个新的对象的内部、可访问性和[[prototype]]属性为构造函数(指prototype.construtor所指向的构造函数)中设置的;
- 执行构造函数,当this关键字被提及的时候,使用新创建的对象的属性;
- 返回新创建的对象(除非构造方法中返回的是‘无原型’)。
这里有篇博客讲解的很详细:https://blog.csdn.net/nyist327/article/details/53790404
本周开始了JS的学习,进度较快,总结知识的同时因为内容太多很容易在学习后面东西的时候忘记前面一些东西的用法,需要不断的回顾。JS给我的感觉就是升级版的C语言+HTML,需要理解的程度更深才能熟练的去应用,比起看书,看教程敲一敲很有必要,能更好的理解用法。关于闭包对于我来说是个很大的难点,只是看书还不足以理解本质和用法,还要用过其他讲解方式和练习,再去尝试学习和理解。