js

Js中的函数

ⅰ亾dé卋堺 提交于 2020-02-07 03:12:24
函数柯里化 柯里化概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数 看一个例子: var add = function(x) { return function(y) { return x + y; }; }; var increment = add(1); var addTen = add(10); increment(2); // 3 addTen(2); // 12 我们定义了一个 add 函数,它接受一个参数并返回一个新的函数。调用了 add 之后,返回的函数就通过闭包的方式记住了 add 的第一个参数。 因为一次性地调用它有点繁琐,所以使用一个特殊的 curry 帮助函数使得这类函数的定义和调用更加容易。 curry的封装 // 初步封装 var currying = function(fn) { // args 获取第一个方法内的全部参数 var args = Array.prototype.slice.call(arguments, 1) return function() { // 将后面方法里的全部参数和args进行合并 var newArgs = args.concat(Array.prototype.slice.call(arguments)) // 把合并后的参数通过apply作为fn的参数并执行 return fn.apply

js取对象属性需注意

拈花ヽ惹草 提交于 2020-02-07 03:07:09
1、通过点的方式 注: 点要查找的是JS中本来就存在的属性名, 不能找到变量或者函数的参数 2、通过括号的方式 注:可以找到变量或函数的参数 来源: https://www.cnblogs.com/gdog/p/10725047.html

理解js中的原型和原型链

时光总嘲笑我的痴心妄想 提交于 2020-02-07 02:49:00
不记下来总是容易忘记掉,相当于备忘吧。。本文主要参考高程3,以及一点自己的想法,如有不对,还望指正 为什么要使用原型模式? 我们创建对象最一开始用的工厂模式: function createPeople(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function () { alert(this.name); } } var person1 = createPeople('Nicolas', 29, 'SoftWare Engineer'); var person1 = createPeople('Greg', 27, 'Doctor'); 该模式的缺点在于: 无法获知一个对象的类型 为了解决该问题,就有了构造函数模式: function Person(name, age, job) { this.name = name; this.age = age; this.job= job; this.sayName = function() { alert(this.name); }; } var people1 = new Person('Nicholas', 29, 'Software Engineer'); var people2 = new

JS知识整理随笔(4) String

你说的曾经没有我的故事 提交于 2020-02-07 02:23:11
2017-10-2 总结更新 var saying='Home sweet home '; //字符串的长度 console.log(saying.length); //转大写 console.log(saying.toUpperCase()) //转小写 console.log(saying.toLowerCase()); //以索引编号为参数,返回这个位置的参数 console.log(saying.charAt(12)); //在字符串中查找一个或一组字符,返回首次出现的索引编号 console.log(saying.indexOf('ee')); //在字符串中查找一个或多个字符,返回最后一次出现的索引编号 console.log(saying.lastIndexOf('e')); //返回两个索引编号之间的字符, console.log(saying.substring(8,14)); //当指定一个字符时,它用查找的每个此字符将字符串分割,然后将他们存储在一个数组中 console.log(saying.split(' ')); //删除字符串开始和结尾处的空格 console.log(saying.trim()); //查找替换 console.log(saying.replace('me','w')); //截取字符串 console.log(saying

js获取object类型所有的键值对

心已入冬 提交于 2020-02-07 02:20:51
万物皆对象,而对象完全可以用键值对来表示,所以,在js中,也是通过键值对来表示对象的,在开发中,我在修改的时候,知道属性值可以直接用点.符号来获取值,但是写common.js的时候,发现这个属性名称是变化的,也就是这样就不能通过点来动态获取了,那么这个怎么获取呢? 先看下面 var obj = {"name1":"张三","name2":"李四"}; var key = "name1"; var value = obj.key;//得到了"undefined" value = obj.name1;//得到了"张三" 其实我是想动态给key赋值,然后得到key为多少所对就的值。但这种做法行不通,obj.key会去找obj下key为"key"所对应的值,结果当然是找不到喽。 那么既然是键值对,那么是不是可以通过 object[key] 来获取这个value呢?然后我就尝试着用 obj[key];//这样获取的就是张三 然后呢,经过查询,还有另外一种方法来说去属性值,就是 eval("obj."+key)。 综上,一共有两种方法来获取属性值 一、var key = "name1";var value = obj[key]; 二、var key = "name1";var value = eval("obj."+key); 来源: https://www.cnblogs.com

js 文件下载,当前页下载,新标签下载____后端返回 GET/POST 文件流,下载文件

强颜欢笑 提交于 2020-02-07 02:19:36
ajax /** * Created by kjf on 2019-03-25. * * axios.request(config) axios.get(url[, config]) axios.post(url[, data[, config]]) axios.delete(url[, config]) axios.head(url[, config]) axios.options(url[, config]) axios.put(url[, data[, config]]) axios.patch(url[, data[, config]]) */ import axios from 'axios'; export default function (url, data = {}, method = 'GET', params, headers) { return new Promise((resolve, reject) => { let promise = null; if (method === 'GET') { promise = axios.get(url, {params: data, headers}); } else if (method === 'POST') { promise = axios.post(url, data, {params: params,

JS trim()方法使用

北慕城南 提交于 2020-02-07 02:17:33
trim去掉了字符串两端Unicode编码小于等于32(\u0020)的所有字符。 (参考 https://blog.csdn.net/leeqihe/article/details/81006611 ) JS trim()方法使用上有浏览器限制: 1.直接使用 string.trim()  浏览器版本限制:JavaScript Version 1.8 2.间接使用 <即自己使用正则构造类trim的方法> function myTrim(x) { return x.replace(/^\s+|\s+$/gm,''); } function myFunction() { var str = myTrim(" Hello World! "); alert(str); }       来源: https://www.cnblogs.com/yanghao2019/p/11049446.html

JS面向对象

浪子不回头ぞ 提交于 2020-02-07 02:13:20
一、面向对象的概念 JavaScript中的每个函数都可以用来创建对象,返回的对象即是该类的实例,也是Object的实例; 二、对象和关联数组 就是对象也可以看成一个数组,对象的值相当于数组里的数,中间用逗号隔开,对象的值可以是属性值,也可是方法。 三、继承和prototype 每个JavaScript对象都是相同基类(Object类)的实例,所以所有的JavaScript对象之间没有明显的继承关系,当程序为对象的某个不存在的属性值赋值时,既可以认为是为该对象增加属性。 当定义函数时,函数中以this修饰的变量时实例属性,如果某个属性值是函数时,即可认为该属性变成了方法。 在类中定义方法有两个弊端: 1、性能低下:每次创建类实例时,就会多次调用类中的方法,方法只需要一个就够,可以共用,如果有多个同样的方法,就会造成系统内存泄漏,从而引起性能下降。 2、使方法函数中的局部变量产生闭包:闭包会扩大局部变量的作用域,就是函数之外也能访问到局部变量。 为了避免这两个弊端,通常使用prototype属性,JavaScript的所有类都有一个prototype属性,如果为JavaScript类的prototype属性增加属性方法,则可视为对原有属性的扩展; 例: < script type = "text/javascript" > function Person ( name , age )

js 数组Array

时光总嘲笑我的痴心妄想 提交于 2020-02-07 02:05:38
/** * js中的array */ function myArray() { // 定义myArray,并添加值 var myArray = new Array(); myArray[0] = 3; myArray[1] = 1; myArray[2] = 2; // 排序前数组中的顺序为[3, 1, 2] // 按从小到大排序 // 排序后数组中的顺序为[1, 2, 3] myArray.sort(function(a, b) { return a > b ? 1 : -1 }); // 按ascii字母顺序排序(默认情况下的排序方法) myArray.sort(); // 按从大到小排序 myArray.sort(function(a, b) { return a < b ? 1 : -1 }); // 遍历myArray for (var i = 0; i < myArray.length; i++) { alert("myArray[" + i + "]=" + myArray[i]); } } function myArray() { var myArray = new Array(); myArray.push("ZhangDan"); myArray.push("LuiLei"); var length = myArray.length; for (var i =

JS array 数组

廉价感情. 提交于 2020-02-07 02:04:34
1.数组的声明方法 (1): arrayObj = new Array(); //创建一个数组。 代码:var arr1 = new Array(); (2):arrayObj = new Array([size]) 创建一个数组并指定长度,注意不是上限,是长度。 代码:var a = new Array(5); (3):arrayObj = new Array([element0[, element1[, ...[, elementN]]]]) 创建一个数组并赋值。 代码:var a = new Array(["b", 2, "a", 4,]); (4):arrayObj = [element0, element1, ..., elementN] 创建一个数组并赋值的简写,注意这里中括号不表示可省略。 代码:var a = ["b", 2, "a", 4,]; (注):注意带“[]”与不带“[]”的区别 代码如下: var a = new Array(5); //指创建长度为5的数组 var a = new Array([5]); //指创建一个数组,长度为1,并且第一位是5 来源: https://www.cnblogs.com/jvziking/p/6957507.html