javascript高级程序编程-学习笔记(基础)
1.js实现
js诞生:为了验证字段是否输出(前期)
1.1分类
Esmascript,Dom,Bom
语法,类型,语句,关键字,保留字,操作符,对象
2.script
async 立即下载
charset 字符集
defer 文档完全解析后执行
src 外部文件
type 脚本语言的内容文件
2.1 嵌入式代码与外部文件(可维护,缓存,适应未来)
2.2 文档模式:混杂,标准
2.3 浏览器不支持脚本时候显示
3.语法,数据类型,控制流语句,函数
3.1 语法
1.区分大小写
2.标识符(驼峰大小写)
3.注释 // /* */
4.严格模式 ‘use strict’
5.语句 (代码块,看起来清晰)
3.2 关键字,保留字
3.3 变量(松散型)
1.var message; undefined
2. function test(){
var message = 'hi'; //局部变量 test(); alert(message);//错误,变量再函数退出后被销毁
}
3. function test(){
message = 'hi'; //全局变量 可以任何地方被引用,不推荐
}
3.4 数据类型
undefined,null,Boolean, Number, String,Object
1.typeof 操作符
2.Undefined,(var声明未进行初始化)
var message; //尚未定义也是,不过打印会报错
3.Null 类型(对象空指针 typeof(Object)
保存对象的变量还没有真正保存对象,就应该明确让变量保存null值
4.Boolean 类型 true false
Boolean true false
String 任何非空字符串 ""
Number 任何非空字符串 0和NaN
Object 任何对象 null
Undefined n/a undefined
5.Number
5.1 浮点数值
5.2 数值范围
Number.MIN_VALUE 5e-324
Number.MAX_VALUE 1.79766931348623157e+308
5.3 NaN (数值) (Not a Number)
本来要返回数值的操作未返回数值
isNaN(函数)
5.4 数值转换
Number() 可用于任何类型(null(0) undefined(NaN) 字符串(“”=0,无数字=NaN)
5.5 String类型
字符字面量 /n 换行 \t 制表 /r 回车
length 属性
toString() 方法null,undefine没有这个方法
6. Object 类型
constructor (构造函数)
hasOwnproperty(propertyName) 检测属性
isPrototypeof(object) 检测原型
toLocalString() 返回对象字符串表示
toString()
valueOf 返回对象的字符串,数值或布尔值通常与toString返回相同
3.5 操作符
3.6 语句 if do while while for for in
3.7 函数
理解参数arguments
没有重载
4.变量 作用域 和 内存问题
4.1 基本类型和引用类型的值
基本类型:Undefined,Null,Boolean,Number,String
引用类型:对象
4.1.1 动态的属性(可添加属性)
4.1.2 复制变量值 (指针指向通一个堆中)
4.1.3 传递参数*
基本类型值的传递如同基本类型变量的复制一样,
引用类型值的复制,如同引用变量类型变量复制一致
4.1.4 检测类型
typeof
instanceof(object, Array, RegExp)
4.2 执行环境以及作用域
4.2.1 延长作用域链
4.2.2 没有块级作用域
4.2.3 垃圾收集
5.引用类型(属性&方法)
5.1 Object类型
var person = new Object();
var person = {name:'a'}
person['name']
person.name
5.2 Array 类型
5.2.1 检测数组
if(value instanceof Array)
if(Array.isArray(value)) ie9+
5.2.2 转换方法
tolocaleString()
toString() //字符串
valueof() //数组
toString() ,分割
join() 也可以使数组变成字符串,分割方式自定义
5.2.3 栈方法
push pop
5.2.4 队列方法 LIFO
shift push
取得第一个元素 改变数组
5.2.5 重排序 reverse() sort()
5.2.6 操作方法
concat() 合并
slice() 0 开始
splice() most powerful
5.2.7 位置方法
indexOf lastIndexOf
从0开始找,
-1没有找到
5.2.8 迭代方法
every filter forEach map some
true 没有返回
false
5.2.9 缩小方法
reduce()
reduceRight()
5.3 Date类型
var now = new Date();
Date.UTC()
5.4 RegExp类型
g全局 i不区分大小写 m多行
var pattern = //
pattern.test()
5.5 Function 类型
5.5.1 没有重载(深入理解)
5.5.2 函数声明与函数表达式
函数声明:变量提升
函数表达式:变量不提升
5.5.3 作为值的函数
5.5.4 函数内部属性
arguments this
this 当在网页的时候全局作用域中
调用函数时,this对象引用的就是window
arguments.callee.caller
5.5.5 属性和方法
length 函数希望接受的命名参数的个数
prototype
apply 数组 arguments
call 设置函数体的this对象的值
bind() IE9+
扩充函数赖以运行的作用域
对象不需要与方法有任何耦合关系
5.5.6 基本包装类型
引用类型与基本包装类型的主要区别就是对象的生存值
Boolean 类型 建议永远不用使用Boolean对象
对象 true
Number 类型 Number对象是Number类型的实例
String 类型
字符方法 charAt() charCodeAt()
字符串操作方法 concat() 拼接
slice()
substr()
substring()
字符串位置方法 indexOf lastIndexOf
trim方法 删除前置以及后缀所有空格
大小写转换 toLowerCase()
toUpperCase()
字符串的模式匹配方法 match() replace()
localeCompare()
fromCharCode()
HTML方法 encodeURI() eval()
Math 对象 min() max()
ceil() floor() round() random()
6.面向对象的程序设计
6.1 属性类型
6.1.1 数据属性
configurable 能否delete
enumerable 能否for in返回属性
unitable 能否修改属性
value 默认undefined
Object defineProperty(person, "name"{
writable: false,
value : 'cc'
})
6.1.2 访问器属性
getter setter
读取属性的特性
getOwnpropertyDescriptor()
6.2 创建对象
6.2.1 工厂模式
function createPerson(name, age,job){
var o = new Object()
o.name = name;
o.age = age;
o.job = job
return o;
}
6.2.2 构造函数模式
function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
this.sayname = function(){
alert(this.name)
}
}
6.2.3 原型模式
function Person(){
}
person.prototype.name = '';
person.prototype.age = 29;
6.3 继承
function inheritPrototype(subType, superType){
var prototype = Object(superType);
prototype.constructor = subType;
subType.prototype = prototype;
}
7.函数表达式
hi();
function hi(){ //提升
}
7.1 递归
7.2 闭包
有权访问另一个函数作用域中的变量函数(能够读取其他函数内部变量的函数)函数内部与函数外部连接起来的桥梁
javascript高级程序编程-学习笔记(基础)的更多相关文章
- javascript高级程序语言学习笔记
1.加法操作符(+)的用法 第一种情况,如果两个操作符都是数值,执行常规的加法计算. 第二种情况,如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来. 第三种情况,只有一个操作数是字符串 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- 《JavaScript高级程序设计》学习笔记
系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...
- 《JavaScript高级程序设计》学习笔记(4)——引用类型
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...
- 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...
- 《JavaScript高级程序设计》学习笔记12篇
写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...
- 1 《JavaScript高级程序设计》学习笔记(1)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 首先,我将从<JavaScript高级程序设计>这本JavaScript学习者必看的经典教 ...
- Shell高级编程学习笔记(基础篇)
目录 1.shell脚本的执行方法 2.shell的变量类型 3.shell特殊变量 4.变量子串的常用操作 5.批量修改文件名实践 6.变量替换 7.在shell中计算字符串长度的方法 ...
- 《JavaScript高级程序设计》学习笔记(2)--JS运算符详解
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 思维导图 前面对JS的运算符的操作很多细节的东西没有提及,今天给大家分享一张网上找的思维导图,对这一部 ...
- JavaScript高级程序开发3笔记
Js对象 注意:js基本数据类型不是对象,但是"abc".match()这种,可以调用对象的方法,是因为调用方法是临时产生了一个wrapper的包装对象,this指向它: Js ...
随机推荐
- vue3 基础-non-props 特性
本篇探讨当父组件通过属性给子组件传数据时, 子组件如果不通过 props 属性进行接收, 那数据会挂载到哪里, 以及子组件如何能使用这些数据. 正常的父子组件传值 <!DOCTYPE html& ...
- FastMCP(python)和 SolonMCP(java)的体验比较(不能说一样,但真的很像)
从 MCP SDK 的发展史上看,FastMCP 是前辈,SolonMCP 则是后辈.mcp-python-sdk 功能完善,已经很成熟了.而 mcp-java-sdk 却还不完善,比如: 还不支持 ...
- Linux安装Libevent
环境 Ubuntu 20.04.2 64位 软件包安装 通过apt-get 命令可以直接安装Libevent,这种方式方便快捷,省时省力. 安装命令如下: sudo apt-get install l ...
- 网络编程:select
原理:参考:https://my.oschina.net/fileoptions/blog/911091 select中内核函数有哪些 源码实现: #undef __NFDBITS #define _ ...
- C#之MethodImpl(MethodImplOptions.Synchronized)
[MethodImpl(MethodImplOptions.Synchronized)] 是 C# 中用于指定方法同步的一个特性,它控制方法的执行方式,确保在多线程环境下某个方法的执行是线程安全的.它 ...
- Golang解析yaml文件
一.具体思路 将配置yaml文件内容解析为我们定义好的struct,这种比较简单,如果想获取对应的值,直接获取即可. 二.实现步骤 首先根据配置文件的内容定义一个结构体Config,结构体类型和yam ...
- OceanBase 中的身外身法 —— Auto DOP(自适应并行)使用技巧分享
首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 OceanBase 相关的各种技术内容.欢迎感兴趣的朋友们关注! Part 1 ...
- FFmpeg开发笔记(六十六)Windows给FFmpeg集成LC3音频的编码器liblc3
<FFmpeg开发实战:从零基础到短视频上线>一书的第五章介绍了FFmpeg如何处理常见的MP3音频和AAC音频,其中MP3格式常用于音乐文件,而AAC格式常用于视频文件. 除此以外,近年 ...
- 我的 Vibe Coding 的第一个项目
大家好,我是 Immerse,一名独立开发者.内容创作者. 关注公众号:#沉浸式趣谈,获取最新文章(更多内容只在公众号更新) 个人网站:https://yaolifeng.com 也同步更新. 转载请 ...
- hot100之回溯上
全排列(046) class Solution { List<List<Integer>> res = new ArrayList<>(); public List ...