js高级函数

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧 本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。 阅读详情

高级函数

//函数安全
//防止忘记使用new后,this指向window
function person(name,age,job){
if(this instanceof person){
this.name=name;
this.age=age;
this.job=job;
}else{
return new person(name,age,job);
}
}

//构造函数窃取其他构造函数 寄生组合继承
function one (side){
this.side=side;
}
function two (width){
one.call(this,2);//this指向pllygon ,side=2 第二次调用
this.width=width;
}
two.prototype = new one();//第一次调用 不加这句结果undefine
three=new two(4);
alert(three.side);//2

//大量if,可以使用惰性载入函数提升效率

//方法一 在调用函数是在处理函数 ,该函数会被覆盖为另一个按合适方式执行的函数
function creatXHR (){//ajax创建XHR对象

if(typeof XMLHttpRequest ! = "undefine"){
	creatXHR=function(){
		return new XMLHttpRequest();
	};
}
else if (typeof ActiveXObject ! = "undefine"){

	creatXHR=function(){
		if (typeof arguments.callee.activeXString ! = "string") {

			var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp"],i,len;
			for(i=0,len=versions.length;i<len;i++){
				try{
					new ActiveXObject(versions[i]);
					arguments.callee.activeXString=versions[i];
					break;
				}
				catch(ex){


				}

			}
			return new ActiveXObject(arguments.callee.activeXString);

		};
	}

	else{
		creatXHR=function(){
			throw new Error("No XHR object available.")
		}
	}
}
return creatXHR();

}

//方法二
var detection = (function(){
if(//支持某特性){
return function(){
//直接用支持的特性
}
} else if(//支持第二种特性){
return function(){
//用第二种特性
}
} else {
return function(){
//用其他解决方案
}
}
})();

//函数绑定
//可以在特定的this环境中以指定的参数调用另一个函数
function bind(fn,context){//fn 函数 context 环境

return function () {
	return fn.apply(context,arguments); //arguments fn的参数
};

}
//es5有bind 可直接使用fn.bind(context)
bind(fn,context);

//函数柯里化
//用于设置一个或多个参数的函数

function curry (fn) {
var args=Array.prototype.slice.call(arguments,1);//arguments curry的参数
//截取 fn 函数出去,只剩除fn之外的参数
//因为arguments并不是真正的数组对象,只是与数组类似而已,
//所以它并没有slice这个方法,而Array.prototype.slice.call(arguments, 1)
//可以理解成是让arguments转换成一个数组对象,让arguments具有slice()方法。
return function () {
var innerArgs=Array.prototype.slice.call(arguments);
var finalArgs=args.concat(innerArgs); //将传递的参数拼接成新数组,并返回新数组
return fn.apply(null,finalArgs);//没有考虑运行环境,所以第一个参数为null
}

}

//更复杂的bind
function bind(fn,context){//fn 函数 context 环境
var args=Array.prototype.slice.call(arguments,2);
return function () {
var innerArgs=Array.prototype.slice.call(arguments);
var finalArgs=args.concat(innerArgs); //将传递的参数拼接成新数组,并返回新数组
return fn.apply(context,finalArgs); //arguments 参数
};

}

//去抖函数 函数节流
function debounce (fn,wait){
var td;
return function () {
clearTimeout(td);
td=setTimeout(fn,wait)
}
}
var myfunc = debounce(function () {
//繁重,消耗性能的操作

},250);
window.addEventListener(‘resize’,myfunc);
/*
像窗口的resize,这类可以以较高的速率触发的事件,非常适合用去抖函数,这时
也可称作“函数节流”,避免给浏览器带来过大的性能负担。
具体的实现时,当函数被调用时,不立即执行相应的语句,
而是等待固定的时间w,若在w时间内,即等待还未结束时,
函数又被调用了一次,则再等待w时间,
重复上述过程,直到最后一次被调用后的w时间内该函数都没有被再调用,

*/
//顾名思义,once函数是仅仅会被执行一次的函数
function once (fn) {
var result;
return function () {
if(fn){
result=fn(arguments);
fn=null;
}
return result;
}
}
var init =once(function(){
//初始化操作
})

//Array是一个类 ,slice是一个方法 call
function test(a,b,c,d)
{
var arg = Array.prototype.slice.call(arguments,1);
alert(arg);
}
test(“a”,“b”,“c”,“d”); //b,c,d
//在没有默认值时,fn.length指的是形参的个数,如果有参数有默认值,
//那么就取第一个具有默认值之前的参数的个数。
//形参个数
function a(x,y){}
a.length // 2

function b(x,y=2,z){}
b.length // 1

function c(x,…args){}
c.length //1
//在函数内部使用,表示实际传入的参数个数,在运行时计算,和形参个数无关
function a(x,y,z){
console.log(arguments.length); // 3
}(1,2,3)

function b(x,y=2){
console.log(arguments.length) // 3
}(1,2,3)

function c(x,y=2){
console.log(arguments.length) // 1

}
//我们知道,Array.prototype.slice.call(arguments)
//能将具有length属性的对象转成数组,除了IE下的节点集合
//(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)
//如:
var a={length:2,0:‘first’,1:‘second’};
Array.prototype.slice.call(a);// [“first”, “second”]

var a={length:2};
Array.prototype.slice.call(a);// [undefined, undefined]

//实例,正则使用
function curry(fn){
var i = 0;
var outer = Array.prototype.slice.call(arguments,1);
console.log(outer)
var len = fn.length;

return function(){
    var inner = outer.concat(Array.prototype.slice.call(arguments));
    return inner.length === len?fn.apply(null,inner):function (){
            var finalArgs = inner.concat(Array.prototype.slice.call(arguments));
            return fn.apply(null,finalArgs);
        }
}

}

var match = curry(function(what,str){
return str.match(what)
});

var hasNumber = match(/[0-9]+/g);
var hasSpace = match(/\s+/g)

hasNumber(“123asd”); //[‘123’]
hasNumber(“hello world!”); //null

hasSpace(“hello world!”); //[’ '];
hasSpace(“hello”); //null

console.log(match(/\s+/g,‘i am Claiyre’)); //直接全部传参也可: [’ ‘,’ ']

//高级函数只是参数是函数或者返回值是函数

var Moqi = function(p1){
this.add = function (p2){
return p1 + ’ ’ + p2;
};
return add;
};
var m=moqi(‘hello’);//m是一个函数 moqi(‘hello’)
//返回的是
//function (p2) {
// return ‘p1’ + ’ ’ + ‘p2’;
//}

m(‘world’);//结果为 hello world
/*
这里的m如何知道p1的值,p1是函数的全局变量
function (p2){
return p1 + ’ ’ + p2;
};
*/

//call apply this 的理解

var age = 40;
var xiaoMing = {
age:30
};
var xiaoLi = {
age: 20
};
var getAge = function(){
console.log(this.age);
};
getAge.call( xiaoMing ); //30 表示函数this指向xiaoMing
getAge.call(xiaoLi); //20 表示函数this指向xiaoLi
getAge.call(undefined);//40

getAge.call(undefined)==getAge.call(null)
getAge.call(null);//40
getAge(); //40

function Class1()
{
this.name = “class1”;

this.showNam = function()
{
    alert(this.name);
}

}

function Class2()
{
this.name = “class2”;
}

var c1 = new Class1();
var c2 = new Class2();

c1.showNam.call(c2);

/Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象
代替this,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象
就能够直接调用Class1 的方法以及属性了
/
function Class1()
{
this.showTxt = function(txt)
{
alert(txt);
}
}

function Class2()
{
Class1.call(this);
}

var c2 = new Class2();

c2.showTxt(“cc”);

//多重继承
function Class10()
{
this.showSub = function(a,b)
{
alert(a-b);
}
}

function Class11()
{
this.showAdd = function(a,b)
{
alert(a+b);
}
}

function Class2()
{
Class10.call(this);
Class11.call(this);
}

YOLOv13涨点改进| CVPR 2026 |独家创新首发、主干改进篇 |利用RIS-PiDiNet主干让YOLOv13更加强大!适合遥感目标检测、小目标检测、旋转目标检测,变化检测,图像分割涨点 🔥本文提出了一种改进的RIS-PiDiNet主干网络,通过引入几何先验构建几何一致性检测器,显著提升了模型在任意方向、结构规则目标场景下的检测性能。包含两个核心模块:S-PDC利用极谐变换的谐波核建模目标结构对称性,RIS-PDC通过SO(2)群平均实现旋转不变性。网络采用基于RIS-block的主干结构并融合轻量级LBP特征,增强了细粒度结构表达能力。实验表明,该方法特别适用于遥感和复杂几何分布场景,能有效提升目标检测的鲁棒性和精度。文章还详细介绍了如何将RIS-PiDiNet集成到YOLOv13框架 阅读详情

相关推荐

从DCI-P3到sRGB:跨媒体色彩转换的矩阵奥秘与实践

本文深入解析从DCI-P3到sRGB的色彩空间转换技术,揭示矩阵运算的核心原理与实践技巧。通过实战案例展示如何正确处理白点差异、伽马曲线转换等关键环节,帮助影视从业者解决跨媒体色彩匹配问题,确保作品在不同设备上呈现一致的视觉效果。

weixin_28709649的博客 328

this指向,防抖函数中的fn.apply(this,arguments)作用

1.介绍:首先我们要了解apply()的基本知识,apply()和call()都是每个函数或对象都拥有的非继承的方法。 2.作用:都是用来改变this的指向的 3.下面介绍带参数和不带参数的常见的应用 首先想很好理解和应用apply,其根本是对于this的理解。 this的三种指向:1.指向this所在函数的直接调用者,2.new的时候,指向new出来的对象,3.事件中指向当前的出发对象 总结:t...

weixin_44494811的博客 1万+

RAGFlow系列(06):从0.20.0版本升级到最新版的完整指南

本文提供了从RAGFlow 0.20.0版本升级到最新版的完整指南。升级前务必进行数据、配置和状态的三层备份,尤其是智能体配置因版本间存在不兼容风险。指南详细说明了如何优雅停止服务、拉取新代码、检查并调整配置文件(如端口、环境变量),以及最终部署验证的步骤,确保升级过程平滑安全。

weixin_29243279的博客 464

call、apply、bind 用法和区别

综上所述,call,apply和bind的区别就是为了改变this的上下文而存在的,因此,有时候你会看到这样的用法。为了不改变this的指向,通常会在函数后边加上bind(this),如下:function f(){}.bind(this) 这样的话,就不会出现莫名其妙的this指向问题了。其实,从es6开始,已经支持箭头函数了,我建议大家用箭头函数,就不会出现this指向的问题了。另外,使用call,apply还可以实现函数的继承。在es6的class没有出现之前,就需要借助它们来实现继承关系。

似水流年QC的博客 1435

MiniMAX H3官方SKILL三段式提示词模板与本地部署全解

视频生成模型的效果高度依赖于提示词的结构与质量,而提示词工程正是连接自然语言与视觉表达的关键桥梁。在文本模型之外,视频模型对场景、角色、镜头动作的信息层次更为敏感,普通自由描述往往导致画面漂移、风格不稳定。MiniMAX H3 作为社区热议的视频生成模型,通过一套官方 SKILL 三段式提示词模板,将环境、主体、镜头动作分类组织,免API、免推理即可稳定产出风格统一的素材。这一设计不仅降低了提示词编写门槛,也提升了多轮生成的复用性,适合短视频生产、影视概念设计及自动化视频流水线等场景。本文围绕该模板的结构与

weixin_33309048的博客 1178

拆开一个烧坏的IGBT模块,手把手教你识别过压、过流、过温的“案发现场”

本文详细解析了IGBT模块失效分析的实战技巧,通过观察铝层熔化纹路、焊锡溢出形态等物理痕迹,手把手教你识别过压、过流、过温的典型失效模式。文章提供了从基础工具包到现场快速诊断的完整流程,帮助工程师精准定位IGBT模块失效的根本原因。

weixin_30655569的博客 426

JS高级——实现apply、call、bind函数

实现apply、call、bind函数原理

@SCY 4752

大模型-internvl高通qnn运行源码解读

模型链接:https://huggingface.co/OpenGVLab/InternVL2-2B论文官方简要说明 https://internvl.github.io/blog/2024-07-02-InternVL-2.0中文解读 https://zhuanlan.zhihu.com/p/702946079在线demo https://internvl.opengvlab.com/

点滴的岁月 1832

对 fn.apply(this, arguments) 的使用还在疑惑?快进来看看它的设计含义及常见使用场景吧~

近期在研究高阶函数封装的过程中,看到 `fn.apply(this, arguments)` 的出镜率非常高,而如果对于不了解该用法的初学者来说,可能直接写成 `fn()` 是更好理解的,但为什么不局限于此,而是要再上升到 `fn.apply(this, arguments)` 的使用呢?此篇文章便来带你一探究竟~

weixin_53893220的博客 1312

【信号与系统】Multisim 仿真信号合成与分解

软件 Multisim 进行方波信号的产生、分解和合成,观察信号波形的分解与合成,加深对信号频谱的理解。

AXYZdong的博客 2万+

14 | TensorFlow2对阿拉伯语手写字符数据集进行识别

该数据集由 60 名参与者书写的16,800 个字符组成,年龄范围在 19 至 40 岁之间,90% 的参与者是右手。每个参与者在两种形式上写下每个字符(从“alef”到“yeh”)十次,如图 7(a)和 7(b)所示。表格以 300 dpi 的分辨率扫描。使用 Matlab 2016a 自动分割每个块以确定每个块的坐标。该数据库分为两组:训练集(每类 13,440 个字符到 480 个图像)和测试集(每类 3,360 个字符到 120 个图像)。数据标签为1到28个类别。

微信号:RunsenLiu 2876

JavaScript学习笔记-01

数组 常见方法 1、arr.push(elem) 将一个或多个元素添加到数组末尾,并返回数组新长度 2、arr.pop() 取出数组最后一个元素 3、arr.shift() 取出数组第一个元素 4、arr.unshift(elem) 将一个或多个元素添加到数组开头,并返回数组新长度 Rest和Spread 1、Rest 将多个元素收集起来“凝聚”为单个数组 function test(a,b,...rest){ console.log(rest); } test(1,2,3,4,

apple_53406386的博客 1160

多体动力学分析软件:SIMPACK_(17).SIMPACK高级编程与脚本

自定义力和约束可以用于模拟更复杂和现实的物理场景。SIMPACK 提供了接口,允许用户通过 Python 脚本来实现自定义力和约束。以下是一个示例,展示如何定义一个自定义力函数并应用于模型。# 定义自定义力函数"""自定义力函数:param t: 时间:param position: 位置:param velocity: 速度:return: 力"""# 创建一个新的 SIMPACK 模型# 添加一个刚体# 添加一个关节# 添加一个自定义力# 设置仿真参数# 运行仿真。

kkchenjj的博客 1422

Js高级总结2 JavaScript函数高级

一个代码段所在的区域分类 全局作用域 函数作用域 块级作用域(ES6才有)作用 隔离变量 不同作用域下同名变量不会冲突。

weixin_54372875的博客 1011

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript高级(2)——js函数进阶

函数进阶 学习目标 能够说出函数的多种定义和调用方式 能够说出和改变函数内部的this指向 能够说出严格模式的特点 能够把函数作为参数和返回值传递 能够说出闭包的作用 能够说出递归的两个条件 能够说出深拷贝和浅拷贝的区别 目录 函数的定义和调用 this 严格模式 高阶函数 闭包 递归 函数的定义和调用 函数的定义方式 函数声明方式function关键字(命名函数) 函数表达式(匿名函数) new Function() 举例第三种: 第三种里面的 Function是构造函数,必须是字符串形式 /

curacaolb的博客 707

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JS高级函数/AOP

JS高级函数/AOP高级函数AOP 面向切片编程实现 高级函数 高级函数 ==> 参数 或者是 返回值 是函数的函数 AOP 面向切片编程 当需要使用某个公共函数时需要在这个函数执行前后添加自己的逻辑, 通常我们的做法不能是直接修改这个函数, 而是通过AOP的方法利用高级函数和原型链的特点处理 实现 // 目标函数 function say(who) { console.log(...

weixin_43476141的博客 390

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JavaScript 高级函数:解锁函数式编程的力量

在现代 JavaScript 开发中,函数不仅仅是执行代码的工具,它们是构建复杂应用程序的基本构建块。高级函数(Advanced Functions)作为 JavaScript 的核心概念之一,为我们提供了强大的抽象能力,使代码更加简洁、可读和可维护。

wenyang12的博客 1351

JavaScript函数高级

langhuage的博客 107

web前端高级JavaScript - JS高阶编程之模块化思想/惰性函数/柯理化函数/compose组合函数

JS高阶编程技巧 利用闭包机制,实现出来的一些高阶编程方式 模块化思想 惰性函数 柯理化函数 高阶组件 - React 函数的防抖和节流 bind compose组合函数 模块化思想 模块化思想演变过程:单例 -> AMD(require.js) -> CMD(sea.js) -> CommonJS(Node) -> ES6Module 为什么要引入模块化思想呢? 在传统的js编程中,往往会将很多函数和变量都写在同一个js文件中,那么如果是团队协作开发,同一个

lixiaosenlin的专栏 5836

javascript中函数的5个高级技巧

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。函数对任何一门语言来说都是一个核心的概念,在javascript中更是如此。本文将深入介绍函数的5个高级技巧。 作用域安全的构造函数 构造函数其实就是一个使用new操作符调用的函数 function Person(name,age,job){ this.name=name; this.age=age; this.job=job; } var person=new Person('match',28

qq_43067585的博客 180

JavaScript高级之函数高级

二、函数高级 1、原型与原型链 Ⅰ-原型 [prototype] 函数的prototype属性 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) 原型对象中有一个属性constructor, 它指向函数对象 给原型对象添加属性(一般都是方法) 作用: 函数的所有实例对象自动拥有原型中的属性(方法) 代码示例 // 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) console

欢迎光临我的主页 296

js高级技巧总结之高级函数和防篡改对象

高级函数 1.安全的类型检测         谈到类型检测,可能大家首先想到的就是typeof 或者 instanceof (检测数组Array.isArray(arr))等这些方式,但是这些方法都有自己的局限性,比如说Safari(直至第四版)对正则使用typeof会返回function,instanceof必须要在同一个作用域下,还有现在浏览器开始支持原生JSON对象了(Douglas...

prayer的博客 750

JS中的高级函数之递归

转载于:https://www.cnblogs.com/shandayuan/p/7141121.html

dengtan2568的博客 140

JS高级总结(函数)

js高级笔记--函数

m0_44981797的博客 1408

探索JavaScript的高级函数技巧

1.背景介绍 JavaScript是一种广泛使用的编程语言,用于创建交互式网页和动态网站。它的灵活性和易用性使得许多开发人员选择JavaScript作为他们的主要编程语言。在本文中,我们将探讨JavaScript的高级函数技巧,以帮助您更好地理解和利用这种语言的功能。 JavaScript的高级函数技巧主要包括:高阶函数、箭头函数、函数柯里化、函数组合、函数拆分、函数装饰器、函数柔性、函数重载...

AI天才研究院 591

JavaScript的高级函数和DOM回流

目录 高级函数 回调函数 栈区 回调函数理解 自执行函数 函数闭包 闭包模拟随机数 闭包模拟点赞 闭包模拟私有属性 递归函数 递归求斐波那契数列 快速排序 防抖和节流 防抖 节流 防抖和节流的区别 call和apply 应用 DOM回流 分类 DOM回流的数据绑定方式 字符串拼接 动态添加 利用文档碎片 高级函数 回调函数 概念:将函数作为参数传递给另一个函数调用的函数(等某个动作完成后调用的函数),是解决异步操作的有效途径 字...

weixin_58139900的博客 1283
上一篇: js 中的this指向
下一篇: js数据结构之数组01
studying_devil
博客等级 码龄7年 0粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值