js高级

复习

编程思想

面向过程:一步一步做
面向对象:找对象解决;
js基于对象模拟面向对象
面向对象的特性

  1. 封装(property method 封装有利于代码的复用)
  2. 继承(继承父类的属性和方法 js中没有类的概念但是有构造函数)
  3. 多态(父类的引用指向子类对象 不同的子类的属性和方法可能不一样)
  4. 抽象性(abstract)
    eg:
// 面向对象执行者变成了指挥者
function eat(){
    eatFood();
};
function eatFood(){
    alert('执行吃饭');
}

自定义构造函数方式创造的对象才有类的概念

工厂模式和构造函数创建对象

相同点:都是函数 可以创建对象 可以传参
不同点:

  1. 工厂模式首字母小写 自定义构造函数首字母大写
  2. 工厂模式有返回值 自定义构造函数没有
  3. 工厂模式里有new 自定义构造函数没有
  4. 工厂模式直接调用函数创建里面new出来的对象 自定义构造函数通过new创建对象

原型

原型的作用

  1. 共享数据,节省内存空间

实例和构造函数的关系

  1. 实例对象通过构造函数创建 创建的过程叫实例化
  2. 判断对象的类型:
    1. 实例对象 instanceof 构造函数名字//尽量用这种方式
    2. 实例对象.构造器 == 构造函数名字 //可能不准确

原型的对象:

  1. proto 浏览器使用的 不是标准的属性(实例对象)
  2. prototype 程序员使用 标准属性(构造函数)

构造函数 实例对象 和原型对象三者的关系

function Person(name) {
    this.name = name;
};
Person.prototype.eat = function () { };
var per = new Person('小明');
// 
// Person构造函数的属性和方法有:
// 1. name:
// 2. prototype :指向原型对象 

// 实例对象per的属性和方法:
// 1. name:
// 2. __proto__ :指向原型对象 

// 原型对象的属性和方法:
// 1. 系统自带的属性
// 2. constructer 也就是构造器指向的是自己的构造函数
// 3. 自己添加的方法eat;

// 实例对象可以调用原型对象的属性和方法 并且数据共享,节省内存空间

原型链

  • 实例对象和原型对象中的关系是通过原型来联系的 这个关系叫做原型链
  • 改变原型指向,应在改变之后添加方法才能访问到
// 构造函数 创建 实例对象
// 实例对象中有一个属性__proto__ 
// 构造函数中有一个属性prototype 
// __proto__和prototype指向同一个原型对象 区别prototype是标准属性 程序员用的;__proto__是给浏览器用 程序员也可以使用
// 原型对象中有一个属性constructor指向了构造函数 
// 实例对象可以直接方法原型对象中的属性和方法
// 调用实例对象的方法和属性 先在构造函数中找 找不到再到原型对象中找 再找不到就报错

use strict 严格模式

Function

所有的函数都是Function的实例对象
call和apply在Function的原型里存在 函数实例可以调用
属性:

  1. name //函数的名字只读不能修改
  2. arguments.length//实参的个数
  3. length//形参的个数
  4. caller()//调用者

bind

bind(对象);//改变this的指向为参数里的对象
函数.bind(对象);//复制函数并将参数传进这个函数 再返回这个函数 通过调用这个返回的函数来使用这个函数/方法

apply和 call

作用:改变this的指向
应用:把别的对象的方法当成自己对象的方法来用
这两个方法在Function.prototype中
函数.call(对象,参数列表);
函数.apply(对象,[参数列表]);

function fn(){};
fn.apply();//相当于传入了一个null或者直接传入一个null 调用该方法的函数对象中的this就是默认的window 
借用函数给传入的对象调用一次并将函数中的this指向传入的对象
函数/方法.apply(对象,[parm]);

作用域和作用域链

  1. 作用域:变量的使用范围
    js中无块级作用域 {}内定义的变量 外部可以访问
    函数中定义的变量是局部变量 函数外面访问不到
  2. 作用域链:变量的使用 从内到外 就近原则 如果一直到全局变量都没有找到就报错

闭包

作用:缓存数据
闭包方法:放在外层和里层中间的函数内
缺点:浪费内存

沙箱

把代码放到()内 防止变量发生冲突

递归

山上有个庙 庙里有个和尚 和尚正

apply总结

  1. apply和call的共同点:
    一个对象想用其他对象的方法可以使用apply:
    函数/其他对象的方法.apply(obj,[参数1,参数2,…]); 借用一次别人的方法那来自己用 并且将这个方法里面的this变成第一个参数obj当场调用一次
  2. 区别:
    call与apply用法基本相同 区别是 apply的参数列表是数组形式 而call是用逗号隔开
    bind是将这个方法/函数复制一遍并返回一个函数,需要调用这个返回的函数来使用这个方法

拷贝

深拷贝 把一个对象中所有的数据拷贝到另一个对象中 效率低费时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值