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高级程序编程-学习笔记(基础)的更多相关文章

  1. javascript高级程序语言学习笔记

    1.加法操作符(+)的用法 第一种情况,如果两个操作符都是数值,执行常规的加法计算. 第二种情况,如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来. 第三种情况,只有一个操作数是字符串 ...

  2. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  3. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  4. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  5. 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...

  6. 《JavaScript高级程序设计》学习笔记12篇

    写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...

  7. 1 《JavaScript高级程序设计》学习笔记(1)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 首先,我将从<JavaScript高级程序设计>这本JavaScript学习者必看的经典教 ...

  8. Shell高级编程学习笔记(基础篇)

    目录 1.shell脚本的执行方法  2.shell的变量类型  3.shell特殊变量 4.变量子串的常用操作  5.批量修改文件名实践   6.变量替换 7.在shell中计算字符串长度的方法  ...

  9. 《JavaScript高级程序设计》学习笔记(2)--JS运算符详解

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 思维导图 前面对JS的运算符的操作很多细节的东西没有提及,今天给大家分享一张网上找的思维导图,对这一部 ...

  10. JavaScript高级程序开发3笔记

      Js对象 注意:js基本数据类型不是对象,但是"abc".match()这种,可以调用对象的方法,是因为调用方法是临时产生了一个wrapper的包装对象,this指向它: Js ...

随机推荐

  1. js操作session

    // 保存数据到sessionStorage sessionStorage.setItem('key', 'value'); // 从sessionStorage获取数据 sessionStorage ...

  2. 探秘Transformer系列之(33)--- DeepSeek MTP

    探秘 Transformer系列之(33)--- DeepSeek MTP 目录 探秘 Transformer系列之(33)--- DeepSeek MTP 0x00 概述 0x01 EAGLE 1. ...

  3. 实现低PE策略的回测

    回测的基本流程 首先需要声明下,此回测属于日间回测,即当天收盘后对交易信号进行检测,得到买入或卖出检测结果,然后由第二天开盘后根据前一天的检测结果完成交易. 其次要对账户进行除权除息处理.因为除权除息 ...

  4. 判别式 AI 与生成式 AI

    本文摘选来自: AI 智能体开发指南 一.背景 为了解决不同的应用场景,在AI的发展过程中,机器学习模型逐步分化为 判别式(Discriminative)和生成式(Generative) 两各技术路线 ...

  5. c语言笔记(翁凯男神

    哼,要记得好好学习去泡帅哥吖 一.快速入门 %p 输出地址 #include <stdio.h> void f(int *p); int main(){ int i = 1; printf ...

  6. stopPropagation()方法阻止父级事件

    方式一 <div id="div1"> <div id="div2"></div> </div> $(" ...

  7. 乌班图20.04上安装java配置tomcat9

    原文参考:https://blog.csdn.net/u010763324/article/details/122678528 Apache Tomcat是一个开源的 Web 服务器和 Java se ...

  8. sql注入过程中字符的过滤

    1.过滤注释符过滤 常用的注释符号: --+ # %23 找到闭合方式,语句后对给一个闭合符,和源语句形成闭合. 2.and 和 or 的绕过: 大小写绕过:anD 复写绕过:anandd 符号代替: ...

  9. Springboot笔记<12>数据访问

    springboot数据访问 springboot整合JDBC JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用.JdbcTemplate是Spring的一部分.J ...

  10. MCP赋能,给Cursor插上“外挂翅膀”:实战操作数据库

    先给大家个例子, 展示如何用mcp如何带飞cursor的.  话不多说,  继续展示 1.建立项目 提示词如下: " 新建个java项目, 叫user-demo,  通过spring boo ...