![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
Wxinin
这个作者很懒,什么都没留下…
展开
-
js十六进制转rgb,检测图片中是否存在指定颜色的内容
【代码】js十六进制转rgb,检测图片中是否存在指定颜色的内容。原创 2023-03-07 16:07:32 · 216 阅读 · 0 评论 -
typeof null
typeof null原创 2023-02-24 00:32:10 · 63 阅读 · 0 评论 -
ios9的浏览器内核引入的js代码报错解决方案
ios9的浏览器内核不会预解析引入的js代码。原创 2023-01-08 22:22:45 · 244 阅读 · 0 评论 -
window.protocol与window.location.host
protocol:属性是一个可读可写的字符串,可设置或返回当前 URL 的协议。原创 2022-08-26 13:52:19 · 491 阅读 · 0 评论 -
javaScript构造函数面向对象
代码】javaScript构造函数面向对象。原创 2022-08-10 11:26:28 · 166 阅读 · 0 评论 -
javaScript的异常处理
代码】javaScript的异常处理。原创 2022-08-10 10:41:53 · 196 阅读 · 0 评论 -
按钮禁用与使用
$(“#button”).attr(“disabled”,“disabled”);$(“#button”).attr(“disabled”,“”);原创 2022-08-05 11:28:53 · 189 阅读 · 0 评论 -
判断单选框是否被选中
$(“#check”).is(“:checked”)原创 2022-08-05 11:26:50 · 605 阅读 · 0 评论 -
document.documentElement.scrollTop
在标准的w3c下,document.body.scrollTop恒为0,需要用document.documentElement.scrollTop来代替;js中每个载入浏览器的HTML文档都会成为Document对象,documentElement 对应的是 html 标签,如果发现两个高度不一样,是css设置的问题,你的html高度不一定高于body。用body查看,其中clientHeight即为body的css高度,而不是:document.body.scrollTop;...原创 2022-08-05 10:33:49 · 7357 阅读 · 0 评论 -
js函数的length属性
js中Function.length获取的是当前这个函数对象的形式参数的个数(即有多少个比传参数)。形参的数量不包括剩余参数(详解见前文)的个数,仅包括第一个具有默认值之前的参数个数。原创 2022-08-03 15:11:29 · 280 阅读 · 0 评论 -
javaScript函数柯里化简介
柯里化也是属于函数式编程里面一个非常重要的概念维基百科解释:1.在计算机科学中,柯里化(Curring),又译为卡瑞化或加里化;2.是把接收多个参数的函数,变成接收一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数,而且返回结果的新函数的技术;3.柯里化声称"如果你固定某些参数,你将得到接受余下参数的一个函数;总结1.只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数;2.这个过程称之为柯里化;例子function add(x, y, z) { retur原创 2022-03-29 17:29:03 · 656 阅读 · 0 评论 -
js中的slice和splice简介
var names = ["abc", "cba", "nba", "dna"]// slice只要给它传入一个start/end, 那么对于同一个数组来说, 它会给我们返回确定的值// slice函数本身它是不会修改原来的数组// slice -> this// slice函数本身就是一个纯函数 给定确定的输入会产生确定的输出,并且没有产生副作用 var newNames1 = names.slice(0, 3)// ["abc", "cba", "nba"]不包含第三个[0,3)相当于原创 2022-03-29 15:41:30 · 461 阅读 · 0 评论 -
js对象转数组
生成键值数组Object.values(obj)生成一个大数组包含n个小数组,小数组第一项为键名,第二项为键值Object.entries(obj)原创 2022-03-29 11:13:43 · 79 阅读 · 0 评论 -
js纯函数简介
函数式编程中有一个非常重要的概念叫纯函数,javaScript符合函数式编程的范式,所以也有纯函数的概念:1.在react开发中纯函数是被多次提及的;2.比如react中组件就被要求像是一个纯函数(为什么是像,因为还有class组件),redux中有一个reducer的概念,也是要求必须是一个纯函数;3.掌握纯函数对于理解很多框架的设计是非常有帮助的;纯函数的维基百科定义:1.在程序设计中,若一个函数符合以下条件,那么这个函数就被称为纯函数;2.此函数在相同的输入值时,需产生相同的输出.3.函原创 2022-03-28 17:30:50 · 858 阅读 · 0 评论 -
es6及之后的剩余参数
注意:箭头函数中没有arguments,在箭头函数中打印arguments会向上层作用域去找(全局中的node环境存在arguments,浏览器中没有arguments打印会报错)function foo() { var bar = () => { console.log(arguments) } return bar}var fn = foo(123)fn()//123--箭头函数本身没有arguments,打印的是上层作用域foo的arguments在es6之后,原创 2022-03-28 16:09:35 · 281 阅读 · 0 评论 -
js数组中的slice实现
Array.prototype.hyslice = function(start, end) { var arr = this start = start || 0 end = end || arr.length var newArray = [] for (var i = start; i < end; i++) { newArray.push(arr[i]) } return newArray}var newArray = Array.prototype.原创 2022-03-28 15:55:26 · 268 阅读 · 0 评论 -
js函数中的类数组参数arguments转为数组
function foo(num1, num2) { // 1.自己遍历 // var newArr = [] // for (var i = 0; i < arguments.length; i++) { // newArr.push(arguments[i] * 10) // } // console.log(newArr) // 2.arguments转成array类型 // 2.1.自己遍历arguments中所有的元素 // 2.2.Array.pro原创 2022-03-28 15:54:39 · 614 阅读 · 0 评论 -
arguments获取当前所在函数
arguments是存在AO中的类数组对象function foo(num1, num2, num3) { // 类数组对象中(长的像是一个数组, 本质上是一个对象): arguments // callee获取当前arguments所在的函数 console.log(arguments.callee)//foo(){} // arguments.callee()}...原创 2022-03-25 13:36:25 · 164 阅读 · 0 评论 -
javaScript模拟实现bind
Function.prototype.hybind = function(thisArg, ...argArray) { // 1.获取到真实需要调用的函数 var fn = this // 2.绑定this thisArg = (thisArg !== null && thisArg !== undefined) ? Object(thisArg): window function proxyFn(...args) { // 3.将函数放到thisArg中进原创 2022-03-25 13:23:50 · 1323 阅读 · 0 评论 -
javaScript模拟实现apply
// 自己实现hyapplyFunction.prototype.hyapply = function(thisArg, argArray) { // 1.获取到要执行的函数 //这里的this是调用hyapply的函数 var fn = this // 2.处理绑定的thisArg thisArg = (thisArg !== null && thisArg !== undefined) ? Object(thisArg): window // 3.执行函数原创 2022-03-25 11:14:01 · 863 阅读 · 0 评论 -
...展开运算符(spread)简介
…names 会遍历这个names数组里的所有的元素,然后把遍历出来的所有元素放到newNames这个数组里var names=["abc","cba","nba"]var newNames=[...names]foo(…names) 将names所有元素取出来作为foo参数var names=["abc","cba","nba"]function foo(name1,name2,name3){}foo(...names)...原创 2022-03-25 09:29:10 · 301 阅读 · 0 评论 -
javaScript模拟实现call
//给所有函数添加一个hycall的方法Function.prototype.hycall = function () { //call函数通过.call()会调用一次函数,那么在这个函数中也要执行一下调用hycall的那个函数 // 问题:得可以获取到哪一个函数执行了hycall var fn = this; fn()}function sum(num1,num2) { return num1+num2}function foo() { console.log('foo函原创 2022-03-24 18:14:27 · 2035 阅读 · 0 评论 -
javaScript中this题
var name = 'window'var person1 = { name: 'person1', foo1: function () { console.log(this.name) }, foo2: () => console.log(this.name), foo3: function () { return function () { console.log(this.name) } }, foo4: function (原创 2022-03-09 16:31:09 · 575 阅读 · 0 评论 -
javaScript中关于this的面试题
var name = "window";var person = { name: "person", sayName: function () { console.log(this.name); }};function sayName() { var aaa = person.sayName; aaa(); // window: 独立函数调用 person.sayName(); // person: 隐式调用 (person.sayName)(); // per原创 2022-03-09 15:42:05 · 353 阅读 · 0 评论 -
javaScript中this---ES6箭头函数中的this
箭头函数不使用this的四种标准规则(四种绑定规则见上上篇文章),也就是不绑定this,而是根据外层作用域来决定this.var name="why"var foo=()=>{console.log(this)//箭头函数中的this作用域会向上一层找}foo()// windowvar obj={foo:foo}obj.foo()//obj绑不到this上 windowfoo.call("abc")//abc绑不到this上 window应用场景:var obj={原创 2022-03-08 18:10:08 · 241 阅读 · 0 评论 -
javaScript箭头函数的使用
箭头函数是ES6之后增加的一种编写函数的方法,它比函数表达式要更加简洁1.箭头函数不会绑定this、arguments属性;2.箭头函数不能作为构造函数来使用(不能和new一起来使用,会抛出错误);编写箭头函数:1.():参数2.=>箭头3.{}:函数的执行体()=>{}var foo = (num1,num2,num3)=>{}高阶函数在使用时也可以传入箭头函数var nums = [10, 20, 45, 78]nums.forEach((item, index原创 2022-03-08 12:43:12 · 425 阅读 · 0 评论 -
javaScript中this-----特殊绑定
1.忽略显示绑定apply/call/bind: 当传入null/undefinedfunction foo() { console.log(this)}foo.apply("abc")//this指向abc字符串foo.apply({})//this指向空对象// apply/call/bind: 当传入null/undefined时, 自动将this绑定成全局对象foo.apply(null)//this指向windowfoo.apply(undefined)//this指向wi原创 2022-03-08 11:24:10 · 117 阅读 · 0 评论 -
javaScript中this绑定规则的优先级
1.默认绑定规则的优先级是最低的因为存在其他规则时,就会通过其他规则的方式来绑定this2.显示绑定优先级高于隐式绑定obj.foo()//this指向obj//1、call/apply的显示绑定高于隐式绑定obj.foo.call('abc')//this指向abcobj.foo.apply('abc')//this指向abc// 2、bind隐式绑定var bar = obj.foo.bind('cab')bar()//this指向cab----这样是直接调用了 无法看obj与bin原创 2022-03-08 10:52:03 · 267 阅读 · 0 评论 -
javaScript中this的绑定规则
this的绑定规则绑定一:默认绑定;绑定二:隐式绑定;绑定三:显示绑定;绑定四:new绑定;绑定一:默认绑定;独立函数调用独立的函数调用我们可以理解成函数没有被绑定到某个对象上进行调用;案例1:function foo() { console.log(this)//this指向window}foo()案例2:// 2.案例二:function foo1() { console.log(this)//window}function foo2() { console原创 2022-03-07 16:45:14 · 237 阅读 · 0 评论 -
javaScript中的this简介
1.this在全局作用域指向什么浏览器中:window(globalObject)Node环境中:{} moudle->加载->编译->放到一个函数->执行这个函数.apply({})function foo(){}foo.apply('abc')//这时候foo里的this就是abc2.开发中,this通常都是在函数中使用多有的函数在被调用时,都会创建一个执行上下文;这个上下文中记录着函数的调用栈、AO等;this也是其中的一条记录(函数在执行时才确定this)原创 2022-03-07 14:39:29 · 259 阅读 · 0 评论 -
javaScript闭包内存释放
javaScript闭包变量对象中未用到的属性,js引擎会释放其占用的内存空间原创 2022-03-07 13:00:26 · 981 阅读 · 0 评论 -
javaScript闭包的定义
javaScript中闭包的定义在计算机科学中对闭包的定义(维基百科):1.闭包(Closure), 又称词法闭包(Lexical Closure)或函数闭包(function closures);2.是在支持头等函数(函数可以作为第一公民)的编程语言中, 实现词法绑定的一种技术;3.闭包的实现是一个结构体(js->对象), 它存储了一个函数和一个关联的环境(相当于一个符号查找表);4.闭包跟函数最大的区别在于, 当捕捉闭包的时候, 它的自由变量会在捕捉时被确定, 这样即使脱离了捕捉时的上下原创 2022-03-04 12:38:45 · 294 阅读 · 0 评论 -
javaScript数组里的高阶函数
1.filter:数组过滤filter中可以传入另外一个函数,然后filter会自动回调这个传入的函数,在回调这个函数时,回传递过来3个参数item、index、arr,这个数组有5个元素,意味着这个函数会被回调5次(也就是在内部实现filter函数的时候他会在内部调5次传入的函数)//[10,5,11,100,55]nums.filter(()=>boolean)var newNums=nums.filter(function(item,index,arr){return false}原创 2022-03-03 13:52:10 · 435 阅读 · 0 评论 -
javaScript函数与方法的区别
javaScript函数与方法的区别:1.函数function:独立的function,那么称之为是一个函数function foo(){}2.方法methodsfunction foo(){}原创 2022-03-03 12:29:54 · 196 阅读 · 0 评论 -
javaScript高阶函数
高阶函数:把一个函数如果接收另外一个函数作为参数,或者该函数会返回另外一个函数作为返回值的函数,那么这个函数就称之为是一个高阶函数例如:function makeAddr(count) { function add(num) { return count+num } return add}function calc(num1, num2, calcFn) { console.log(calcFn(num1, num2))}...原创 2022-03-03 10:15:25 · 129 阅读 · 0 评论 -
javaScript的垃圾回收算法
因为内存的大小是有限的,所以当内存不再需要的时候,我们需要对其进行释放,以便腾出更多的内存空间所以大部分现代的编程语言都是有自己的垃圾回收机制:1.垃圾回收的英文是Garbage Collection,简称GC;2.对于那些不再使用的对象,我们都称之为垃圾,他需要被回收,从而释放更多的内存空间;3.而我们的语言运行环境,比如java的运行环境JVM,javaScript的运行环境js引擎都会有垃圾回收器;4.垃圾回收器我们也简称为GC.GC是根据GC的算法知道那些对象是不再使用的常见的GC算法原创 2022-03-02 16:31:22 · 523 阅读 · 0 评论 -
javaScript的内存管理
javaScript会在定义变量时为我们分配内存,定义函数的时候也会创建函数对象,也是会自动分配内存的但是内存分配方式是不一样的1.js对于基本数据类型的分配会在执行时,直接在栈空间进行分配2.js对于复杂数据类型内存的分配会在堆内存中开辟一块空间,并将这块空间的指针返回值变量引用...原创 2022-03-02 15:57:49 · 234 阅读 · 0 评论 -
js变量连等赋值作用域面试题
function foo() { var a = b = 10 // => 转成下面的两行代码 // var a = 10 // b = 10}foo()console.log(a)//not defined报错console.log(b)//10var a=b=10转成var a=10;b=10a保存在foo函数执行上下文的AO中,而b在foo函数中直接赋值就会将b默认当成全局变量赋值因此在全局中打印a为not defined报错,b为10...原创 2022-03-02 15:18:58 · 170 阅读 · 0 评论 -
js变量赋值问题
function foo() { // var m=100//not defined报错 m = 100}foo()console.log(m)1、如果在函数中声明一个变量,全局作用域中并没有声明,在调用函数之后打印m结果会是not defined报错2、未定义m却给m赋值在调用函数之后打印m结果会是100 这是因为js引擎会默认m定义在全局里的,直接把m当成全局变量定义了(放到全局了)...原创 2022-03-02 11:15:59 · 575 阅读 · 0 评论 -
forEach循环改变this指向
function foo(el) { console.log(el,this.id) }var obj = { id:'小明' }var nums = [1,2,3] nums.forEach(foo,obj)输出的结果为值的注意的是forEach循环数组的参数有两个一个是回调函数,另一个是this的指向thisValue 可选。传递给函数的值一般用 “this” 值。如果这个参数为空, “undefined” 会传递给 “this” 值里是引用array.forEach原创 2022-02-28 09:41:12 · 707 阅读 · 0 评论