js学习

本文深入探讨了JavaScript的基础特性,包括动态性、弱类型、数据类型、运算符、对象和JSON、函数上下文、数组、正则表达式、闭包、面向对象的JS以及函数式编程的特点。文章详细介绍了变量、作用域、运算符、对象和JSON的使用,以及如何通过闭包和面向对象编程来解决实际问题。

特点:动态性,不必事先创建对象;弱类型,无需在声明时指定;解释

数据类型:基本数据类型(String、Number、boolean);对象(属性集合,键值散列表,复合数据类型);数组(有序列表);函数(包含可执行代码)

typeof

valueof():将一个对象的值转换成一个合乎上下文需求的基本类型。

tostring():打印对象对应的字符串,所有非空对象在布尔环境下都被转换成true。

类型的判断:instanceof+类型

一.变量:基本类型和引用类型

作用域:无var为全局


二。运算符

[]数组、对象

(.)

==相等(对两边的操作数做类型转换)  ===等同(不会)

相等:类型同时,判断等同性。(值)

    类型不同时,null、undefined相等

数字与字串,字串转为数字比

true->1,false->0,比

对象、数字/字串,对象(tostring/valueof)原始值比

其他为false。

等同:类型不同,false

    类型同,全数字:值(NAN除外,NAN与本身也不等)

全字串:字串值

全布尔:true/false

俩操作数引用同一个对象

俩操作数均为null/undefined

三。对象和json   json动态创建对象

1.引擎初始化会创建一个全局对象window,只需要在顶级作用域用var global=this即可

2.原型对象:遍历原型链,是由上而下,最先遇到的先返回,可用于重载

3.this:当前上下文,调用者引用

4.对象的声明三种方式

new object()然后动态加属性

类原型,然后new+对象名来构建新对象

json

5.json

多个返回值应用

遍历一个js对象:for(var item in json){}

6.函数:解释器会传给函数一个类似于数组的内部值arguments

7.js函数是局部作用域内运行的,在局部作用域内运行的函数体可以访问其外层的变量和函数。其作用域在定义时(词法分析时)就确定下来,而并非执行时确定。

8.局部变量隶属于调用对象。

参数和局部变量作为调用对象属性存储。

全局作用链只有全局对象,函数作用域链有调用对象、全局变量。

查找变量为遍历作用域链,一直向上找,找到返回,无则undefined。

四。函数上下文

1.call和apply通常用来修改函数的上下文。

函数中的this指针将被替换成call/apply的第一个参数

2.使用函数:赋给一个变量,赋为对象的属性,作为参数,返回值

五。数组

同一数组可有完全不同类型的元素。

有栈、列表等操作

length为可变属性、控制数组长度

字符串也可作为数组下标

数字排序需提供一个对象指定规则

delete的缺陷

remove写法应用slice

for..in变量数组

不要对全局对象进行扩展,容易有bug

五。正则

1.RegExp:js的内置类

2.元字符:需元字符字面意思,须转义。

特殊字符:以转义“\”为前导,如要字面意思,同样转义。

范围及重复:{,}

3.test()只是测试目标串是否有表达式匹配部分,而不一定整个串匹配、可加/^     $/

4.分组与引用

括号用途:(1)将子表达式标记,以区别于其他表达式

(2)用来分组 pattern.exec(str)  第一个元素为整个串,第二个为第1个分组,类推

(3)对引用起辅助作用(在同一个表达式中,后边的式子可引用前边匹配文本) 如 “\1”表示第一个分组,类推

5.创建

(1)字面量 var regex=/pattern/;

(2)RegExp 

一般:var regex=/pattern/[switchs];       switch:i、m、g

6。RegExp对象的方法

(1)test()测试串中是否有合乎模式的匹配,而不关心匹配的结果

(2)exec()对串进行匹配

(3)complile()编译正则表达式==》重新声明一个正则

7.String中的正则表达式

match()匹配正则表达式,返回匹配数组

replace()替换

split()分割

search()查找,返回首次发现的位置,对匹配的组进行引用 $n

each:Jquery中遍历集合的方式

六。闭包

1.如果在函数func内部声明函数inner,然后在函数外部调用inner,这过程即产生一个闭包。

2.闭包允许引用在于外部函数中的变量。然而,它并不是使用该变量创建时的值。相反,他会使用该变量最后的值。

*因此,可立即执行内部函数获得创建时候的当前值。

3.用途:

(1)即有的函数只执行一次,其内部变量无需维护,比如UI的初始化。(匿名自执行函数)

(2)缓存:闭包不会释放外部的引用,从而函数内部的值得以保留。

(3)实现封装

4.应注意问题

(1)内存泄露 解释器回收机制,引用计数

(2)上下文引用:this(inner函数中)

七。面向对象的js

1.原型继承:通过原型链来实现

(1)引用:js的引用始终指向最终的对象,而非引用本身

(2)new:js中通过new操作符来作用于一个函数

实际上会发生这样的动作:创建一个空对象,然后用函数的apply方法,将这个空对象传入作为apply的第一个参数,及上下文参数。这样函数北部的this就会被这个空对象替代。

2.封装:可为类添加静态成员,只需为函数对象家一个属性即可。

3.工具包base

创建类的方式:base.extend方法传入一个json对象(含成员和方法)

   新类.extend 可实现继承

 模拟单例:constructor:null

4.事件分发器:观察者模式

UI组件发出事件到事件分发器,也可以注册自己到分发器,当自己关心的事件到达时,进行响应。

八。函数式的js特点

1函数不依赖于对象而独立存在

2函数可以保持自己内部数据(闭包)

3匿名函数(lambda)使用之后就被释放

4高阶函数,一个或多个函数为参数的函数

5.柯里化:预先将函数的某些参数传入,得到一个简单的函数,但是预先传入的参数被保存在闭包中。

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值