js函数和封装
$就是jquery对象,$()就是jQuery(),在里面可以传参数,作用就是获取元素
js对象与jQuery对象的区别:jQuery对象是一个数组,jQuery对象转为js对象:[0] 取第一个即可,js对象是dom对象,转为jquery对象:$(' ')
函数声明
function 方法名(){
//方法体
}
//调用函数myFunc,传入的参数是一个匿名函数,返回一个匿名函数
myFunc(function() {
return function(){};
});
- 函数表达式
var 变量名 = function [name] ([param1[, param2[, ..., paramN]]]){
//方法体
};
- 箭头函数
//没有方法名
//代码块有多条语句时,用大括号包裹
//返回值是对象时,用小括号包裹
//箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this
//没有 arguments
//不能通过 new 关键字调用
//没有原型
//没有 super
(参数) => {
//方法体,返回值
}
- 匿名函数
(function (){
//方法体
})() //这里表示立即执行
- 立即执行函数的不同写法:
详情可参考:https://blog.csdn.net/weixin_30297281/article/details/98843630
function() {}() // 错误写法
(function 方法名(){})();
!function (){}()
~function (){}()
(function (){})
+function(){}();
(function() {})();
(function() {}());
- 函数闭包
详情查看csdn:https://blog.csdn.net/mnilz/article/details/104221272
定义:当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包
特点:
函数嵌套函数
函数内部可以引用外部的参数和变量
参数和变量不会被垃圾回收机制回收
- 对象增强
const username = 'goudan';
const age = 20;
const sex = '男';
const reqData = {
username: username,
age, // 当key和value的名称一致时,可省略value
sex
}
- 对象方法的定义
//方法名作为key,函数代码块作为value
const user = {
add: function(){
console.log(this); // 指向当前对象
},
update: () => {
console.log(this); // 箭头函数的写法,指向Windows对象
},
del(){
console.log(this); // ES6中简写方式,指向当前对象
}
}
//使用:对象.方法名
user.add()
- js封装
//对象方法的使用案例,可将对象方法单独封装到js,使用时引入
const $ = {
dom: (obj) => { // 获取dom节点
if(obj.indexOf('.') == 0) {
return document.getElementsByClassName(obj.substring(1))
}
if(obj.indexOf('#') == 0) { // 根据id获取dom元素
return document.getElementById(obj.substring(1))
}
return document.getElementsByTagName(obj) // 返回指定标签名的对象的列表
},
query: (str) => { // 获取选中的第一个指定元素
return document.querySelector(str)
},
queryAll: (str) => { // 获取选中的所有指定元素
return document.querySelectorAll(str)
},
siblings: function(elem) { // 获取所有兄弟节点
//parentNode返回指定节点的父节点,childNodes返回指定节点的所有子节点
return $.siblingAll(elem.parentNode.childNodes, elem)
},
siblingAll: function(o, elem) { // 获取所有子节点
var arr = []
for(let item of o) {
//nodeType返回指定节点的节点类型,元素节点返回1,属性节点返回2
if(item.nodeType === 1 && item !== elem) {
arr.push(item)
}
}
return arr;
},
}
// 对象.方式名
var oP = $.query('div.box p.current') // 获取到ele对象
var o = $.siblings(oP) // 获取所有兄弟节点
- jquery.ajax
$(function(){
//请求参数
var list = {};
//
$.ajax({
//是否异步,默认true为异步请求
async: false,
//请求方式
type : "POST",
//请求的媒体类型,发送
contentType: "application/json;charset=UTF-8",
//请求地址
url : "http://127.0.0.1/admin/list/",
//发送请求的数据,这里转为字符串格式,才能进行传输
data : JSON.stringify(list),
//返回的数据格式
dataType : json,
//请求成功
success : function(result) {
console.log(result);
},
//请求失败,包含具体的错误信息
error : function(e){
console.log(e.status);
console.log(e.responseText);
}
});
});
- async和await
// async放在函数前表示这是一个异步函数,该函数的执行不会阻塞后面代码的执行
async getMenuList(){
// await只能在async函数中使用,await表达式会暂停当前 async function的执行,先执行await
const {data: res} = await this.$http.get('menus');
console.log(res)
}
js函数和封装的更多相关文章
- JS —— 轮播图中的缓动函数的封装
轮播图的根本其实就是缓动函数的封装,如果说轮播图是一辆跑动的汽车,那么缓动函数就是它的发动机,今天本文章就带大家由简入繁,封装属于自己的缓动函数~~ 我们从需求的角度开始,首先给出一个简单需求: 1. ...
- react request.js 函数封装
1.request.js 函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from ...
- js函数表达式和函数声明的区别
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
- js 函数
函数:封装了某一块功能 四要素: 1.返回类型 2.函数名 3.参数列表4.函数体强类型语言 返回类型 函数名 首字母大写 参数列表string(字符串) Show (int a){ 函数体 }弱类型 ...
- JSF页面中使用js函数回调后台bean方法并获取返回值的方法
由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的, ...
- JS类的封装及实现代码
js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...
- 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析
作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
- js函数的各种写法与调用
以下是我见过的各种js函数的各种写法以及调用,虽然有些写法及其调用我不清楚其专业术语叫啥,但并不影响我写一个总结笔记. 我们刚开始接触js语音,经常看到的这种名叫“使用function关键字来定义函数 ...
随机推荐
- ThinkPHP中使用Verify类生产验证码不显示的原因
今天在做网站部署的时候,发现登录页面的验证码显示不出来了,而且不报任何错误. 直接通过url访问该操作也不能显示. 后来在网上查找了一些解决方法. 在调用$verify = new \Think\Ve ...
- 【分布式锁】通过MySQL数据库的表来实现-V1
一.来源 之所以要写这篇文章是因为想对自己当前的分布式知识做一个归纳.今天就先推出一篇MySQL实现的分布式锁,后续会继续推出其他版本的分布式锁,比如通过Zookeeper.Redis实现等. 二.正 ...
- POJ3268-最短路径-反向存边
因为是单向边,牛儿来回的路径长度并不相同,所以需要用两次dijkstra,一次正向从x开始dijkstra,再将边全部反向存再来一次. 因为是板子题比较良心n比较小,我们就可以用矩阵来存储啦.如果n比 ...
- pytest框架
1.添加日志 import logging logging.debug('This is debug message') logging.info('This is info message') lo ...
- Vulnhub -- DC1靶机渗透
信息收集 开启了 22端口,ssh服务 80,http服务 111,RPC服务 先观察80端口 发现采用的是Drupal的cms 目录爆破: 但是,没有找到可以直接利用的点 登录的页面进行SQL注入即 ...
- odoo14里自定义批量下载数据【excel】
1.创建一个向导模型: from odoo import models, fields, api import base64 import xlwt from io import BytesIO cl ...
- HTML之单词
段落 paragraph <a href="https://www.runoob.com">超链接 anchor (锚点,引申为连接,link已经被html占用) Hy ...
- Tom_No_01 IDEA tomcat 源码环境搭建
1.下载源码 apache-tomcat-8.5.50-src 2.下载源码 放D盘,解压后根目录新建pom.xml和catalina-home pom.xml文件中内容为 <?xml vers ...
- navicat连接MySQL数据库出现Authentication plugin 'caching_sha2_password的问题
1.以管理员身份运行cmd终端,cd 到mysql安装目录的bin文件夹下面 输入mysql -u root -p,回车键后输入密码登录mysql 依次输入一下三条命令: ALTER USER 'ro ...
- Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)
影响范围 所有Jenkins主版本均受到影响(包括<=2.56版本) 所有Jenkins LTS 均受到影响( 包括<=2.46.1版本) poc下载 https://github.com ...