fn

javascript常用方法函数收集

独自空忆成欢 提交于 2020-03-03 21:29:16
字符串长度截取 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/,strre = "" ; for ( var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null ) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break ; } } return strre + "..." } 替换全部 1 2 3 String.prototype.replaceAll = function (s1, s2) { return this .replace( new RegExp(s1, "gm" ), s2) } 清除空格 1 2 3 4 String.prototype.trim = function () { var reExtraSpace = /^\s*(.*?)\s+$/; return this .replace

JavaScript常用方法函数收集

心已入冬 提交于 2020-03-03 21:02:21
本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助。 1. 字符串长度截取 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/, strre = ""; for (var i = 0; i < str.length; i++) { if (icount < len - 1) { temp = str.substr(i, 1); if (patrn.exec(temp) == null) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break; } } return strre + "..." } 2. 替换全部 String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2) } 3. 清除空格 String.prototype.trim = function() { var reExtraSpace = /^\s*(.*?)\s+$/; return this.replace(reExtraSpace, "$1") } 4.

javascript常用方法函数收集

冷暖自知 提交于 2020-03-03 21:01:39
字符串长度截取 function cutstr ( str , len ) { var temp , icount = 0 , patrn = /[^\x00-\xff]/ , strre = "" ; for ( var i = 0 ; i < str . length ; i ++) { if ( icount < len - 1 ) { temp = str . substr ( i , 1 ); if ( patrn . exec ( temp ) == null ) { icount = icount + 1 } else { icount = icount + 2 } strre += temp } else { break ; } } return strre + "..." } 替换全部 String . prototype . replaceAll = function ( s1 , s2 ) { return this . replace ( new RegExp ( s1 , "gm" ), s2 ) } 清除空格 String . prototype . trim = function () { var reExtraSpace = /^\s*(.*?)\s+$/ ; return this . replace ( reExtraSpace , "$1" )

Python不支持函数重载,那就写一个

醉酒当歌 提交于 2020-03-03 19:12:42
  前段时间学习C++,发现C++有个函数重载的情况。    (以下介绍来自百度百科) 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的 形式参数 (指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。   我查了一下关于Python的函数重载,发现Python并不支持函数重载。   但是,我发现可以通过其他的一些方法,来实现这个函数重载。   通过在网上搜索,找到一些使用Python实现函数重载的方法,这其中就有几种“假的”函数重载,他们根本就没有领会到函数重载的优雅之处。   最后看到一个博客上写的用Python实现的函数重载,我觉得非常的好,在这里就与大家分享一下。 博客来源: https://arpitbhayani.me/blogs/function-overloading   实现过程主要分为三个部分,1、包装函数(Wrapped the function);2、构建虚拟命名空间(Building the virtual Namespace);3、使用使用装饰器作为钩子(Using decorators as a hook)。 /01/ 包装函数   包装函数的目的在于,可以包装任何函数

js全局访问局部变量

旧城冷巷雨未停 提交于 2020-03-03 09:55:27
1、   在函数内使用this.name(变量名)的方式赋值, 当函数作为普通函数调用时 ,在函数外部可以直接访问到,这是因为这里的this指向window: function fn(){ var r = 2 ; this.ss = 0; this.sum=function(num1,num2){    return (num1+num2)*r; }; } fn(); //var b = new fn(); console.log(ss); //0 console.log(window.sum(1,2)); //6 console.log(sum(1,2)); //6    当函数作为方法函数调用时, 情况又有所不同,这时候this指向发生变化,指向自身: function fn(){ var r = 2 ; this.ss = 0; this.sum=function(num1,num2){    return (num1+num2)*r; }; } var b = new fn(); /* console.log(ss); //error 报错 console.log(window.sum(1,2)); //error 报错 console.log(sum(1,2)); //error 报错 */ //可以通过实例访问 console.log(b.ss); //0

异步专题

时间秒杀一切 提交于 2020-03-03 07:58:15
同步与异步 /* 同步异步是什么: 同步和异步是一种消息通知机制 同步阻塞: A调用B,B处理获得结果,才返回A A在这个过程中,一直等待B结果,没有拿到结果之前,需要A(调用者)一直等待和确认调用结果是否返回,拿到结果,然后继续再执行下去. 做一件事,没有拿到结果之前,就一直等待,一直等到有结果了,再去做下面的事. 异步非阻塞: A调用B,无需等待B结果,B通过状态,通知A或回调函数来处理. 做一件事,不用等待事情的结果,然后就去忙别的了,有了结果,再通过状态来告诉B,或者通过回调函数来处理. 生活例子 小明去图书馆借书,和管理员说找那本书,管理员就去一本本查,查完之后才告诉小明,有没有这个书; 小明A 图书馆管理员B 查的这个过程需要时间,所以 同步 -> 在管理员找到或者找不到的过程中,不回去通知小明,需要小明'一直'去问他结果 异步 -> 在管理员找到之后,就会'通知方式'去告诉小明,所以小明可以继续干别的事,等待通知管理员通知就行; */ { // 同步:阻塞 function test(){ console.log("test..."); } test(); console.log("end..."); // 代码执行过程: test... -> end... 因为他们是一步一步向下执行的; } { // 异步:非阻塞 // 在JS中非常典型的 异步函数 :定时器

多分类中accuary与micro F1-score的恒等性

為{幸葍}努か 提交于 2020-03-03 05:03:39
发现在多分类问题(这里『多分类』是相对于『二分类』而言的,指的是类别数超过2的分类问题)中,用 sklearn 的 metrics.accuracy_score(y_true, y_pred) 和 float(metrics.f1_score(y_true, y_pred, average="micro")) 计算出来的数值永远是一样的,在stackoverflow中搜索这个问题 Is F1 micro the same as Accuracy? 也搜到micro F1 score与accuracy数值是相等的,遂证明如下: 定义 TP/FP/FN 为多分类问题各类的tp/fp/fn之和,三者之间的关系有如下引理(其中 ALL 是总样本数)。 引理: FP = FN = F F + TP = ALL 引理的证明: FP 与 FN 恒等性的简单证明: 考虑多分类问题的混淆矩阵, FP 和 FN 的值都是混淆矩阵所有非对角线的值求和,只不过 FP 计算时是先对列求和再对行求和, FN 计算时是先对行求和再对列求和。由于 FP 与 FN 恒等,故可以统一记作 F . 而 TP 是混淆矩阵的对角线和。 引理证毕 。 下面计算micro Precision P , micro Recall R , micro F1 score F1 : P = TP / (TP + FP) R = TP /

JS new原理和代码实现

不打扰是莪最后的温柔 提交于 2020-03-03 01:17:46
示例: var Fn=function(){ this.name='hty' } const fn=new Fn; 当new Fn执行的时候,内部执行过程如下: 1、一个继承自Fn.prototype的新对象被创建。 2、使用指定的参数调用构造函数Fn,并将this绑定到新创建的对象。new Fn等同于new Fn(),也就是没有指定参数列表,Fn 不带任何参数调用的情况。 3、由构造函数返回的对象就是new表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤),这里需要注意,如果构造返回的不是对象,则不管return语句,返回步骤1创建的对象。 手动实现: var New =function(fn){ var obj={}; obj.__proto__=fn.prototype; // 将 arguments 对象转为数组 var args = [].slice.call(arguments); //去除构造函数 args.shift(); // 执行构造函数并改变this对象 var result = fn.apply(obj, args); if(Object.prototype.toString.call(result)=="[object Object]" ){

观察者(发布——订阅)模式

梦想的初衷 提交于 2020-03-02 18:13:02
观察者模式   观察者模式广泛应用于客户端JavaScript编程中。所有的浏览器事件(鼠标悬停,按键等事件)是该模式的例子。它的另一个名字也称 自定义事件 ,与那些由浏览器触发的相比,自定义事件表示是由你编程实现的事件。此外,该模式的另一个别名是 订阅——发布模式 。   设计这种模式背后的主要动机是促进形成松散耦合。在这种模式中,并不是一个对象调用另一个对象的方法,而是一个对象订阅另一个对象的特定活动并在状态改变后获得通知。订阅者也称之为观察者,而被观察者的对象称为发布者或主题。当发生了一个重要的事件时,发布者将会通知(调用)所有订阅者并且可能经常以事件对象形式传递消息。 1. 现实中的观察者模式   以售楼处为例,小明想要买房,于是招待人员记下小明的手机。小兵,小龙也买房,招待人员获得他们的手机通通给记在花名册上,过几天,有了他们中意的房子,工作人员便会翻开花名册,打电话伺候。   在这个例子中,小明,小龙,小兵是订阅者,他们订阅房子的信息。售楼处是发布者,一有消息便会依次打电话给购房者。 2. DOM事件   实际上,只要我们曾经在DOM节点上面绑定过事件函数,那我们就曾经使用过观察者模式,来看看下面这两句简单的代码发生了什么事情: document.body.addEventListener('click', function () { alert('1'); },

JavaScript——数组&函数

那年仲夏 提交于 2020-03-02 10:54:44
本章的内容 本章的总体思路,围绕着数组展开。 数组Arry 一、数组是是?它有几种创建方式? 1.数组是什么? 数组是一组相关的数据集合。可以把一组相关的数据一起存放,并提供方便的访问(获取)方式。 数组是指 一组数据的集合 ,其中的每个数据被称作 元素 ,在数组中可以 存放任意类型的元素 。数组是一种将一组数据存储在单个变量名下的方式。 2.数组的创建方式 一共有两种方式。new一个,还有一种是字面量的方式。 new一个, var 数组名 = new Array() ; var arr = new Array(); // 创建一个新的空数组 字面量的方式 //1. 使用数组字面量方式创建空的数组 var 数组名 = []; //2. 使用数组字面量方式创建带初始值的数组 var 数组名 = ['大明','小陈','小张','老李']; //3.在数据中可以放任意类型 var 数组名 = [0,true,'小张',13213]; 这种字面量方式也是我们以后最多使用的方式,也是在开发中常用的 ### 二。如何访问数组中的元素? ### 1.使用索引(下标)进行访问。 需要注意的是这里的索引是从0开始的。 // 定义数组 var arrStus = [1,2,3]; // 获取数组中的第2个元素 alert(arrStus[1]); //这里获取的是值是 2 alert(arrStus