首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

爆肝整理高频js手写题请查收

constructor,所有的构造函数会指向Object对象有循环引用,会报错面试版:/** * deep clone * @param {[type]} parent object 需要进行克隆的对象...主要的作用(优点):广泛应用于异步编程中(替代了传递回调函数)对象之间松散耦合的编写代码缺点:创建订阅者本身要消耗一定的时间内存多个发布者订阅者嵌套一起的时候,程序难以跟踪维护实现的思路:创建一个对象...[i]] === undefined) { result[keyArr[i]] = {}; } // 如果第 i 层属性对应的值不是对象Object)的一个实例...ES6对迭代器的实现JS原生的集合类型数据结构,只有Array(数组)Object对象);而ES6中,又新增了MapSet。...undefined、任意函数以及symbol,会被忽略(出现在非数组对象的属性值中时),或者被转换成 null(出现在数组中时)。

1.1K40

JS实现运算符重载

最近要做数据处理,自定义了一些数据结构,比如Mat,Vector,Point之类的,对于加减乘除之类的四则运算还要重复定义,代码显得不是很直观,javascript没有运算符重载这个像C++、C#之类的功能的确令人不爽...翻译成 S = replace(replace(A, '+', replace(replace(B,'',(replace(B,'-',C.fun())))),'/',2),'+',D) 在replace函数中我们调用对象相应的运算符函数...= 'object'){ return new Function('a','b','return a' + op + 'b')(a,b) } if(!...throw '不同类型的对象不能使用四则运算' } let target = null if (Object.getPrototypeOf(a).isPrototypeOf(b)...这里需要注意‘(’元素前是否为函数调用或replace,如果是函数调用或replace,则需要继续向前弹出数据,闭合replace函数的闭合。

5.9K20

来自1000多个项目的10大JavaScript错误浅析

在Chrome里读取未定义对象的属性或调用未定义对象的方法时就会发生这个错误,在Chrome开发者控制台可以很容易地重现这个错误。...TypeError: ’undefined’ is not an object 在Safari里读取未定义对象的属性或调用未定义对象的方法时就会发生这个错误,在Safari开发者控制台可以很容易地重现这个错误...TypeError: Object doesn’t support property 在IE里读取未定义对象的属性或调用未定义对象的方法时就会发生这个错误,在IE开发者控制台可以很容易地重现这个错误。...TypeError: ‘undefined’ is not a function 在Chrome里调用一个未定义函数时就会发生这个错误,可以在Chrome开发者控制台Mozilla开发者控制台重现这个错误...如果在进行事件处理时遇到这个错误,请确保事件对象被作为参数传入到函数当中。旧浏览器(IE)提供了全局的event变量,但并不是所有的浏览器都会这样。

6.2K80

js写插件教程

//当然你不引用jq的话头部的$底部的jQuery干掉;你若引用了更过的依赖可以依次添加; //最后面的undefined可不写;最好写了;保证里面再出现的undefined未定义的意思;不被其他东西赋值...号(叹号)或者;(分号)这不是写错了,为了防止那个二货写的js结束没有分号;而可能发生报错 /* ;function(win,doc,$,undefined){ }(window...;你想想;如果整个插件没有执行函数;多不好;一堆方法function就不调用;对;这里是调用的时候最开始执行的函数 } //;给构造函数addHtml对象原型里添加属性(方法)...addHtml.prototype = {//给函数写方法;这里可能不止一个函数;你还记得你在全局里写一个个的function吗;贼乱; //找也不好找;把一个个函数都写到对象的属性里;...调用函数就直接调用对象的属性; constructor:addHtml,//构造器指向构造函数;这行其实不写没啥毛病;不过有时候防止构造器指向Object的情况;你还是装逼写上吧;

35.1K10

javaScript中is-not-defined,undefinednull的区别

is not defined与undefined 之前没太注意is not definedundefined有什么区别,每次都是简单的把两者理解为未定义,现在回过头来梳理js基础的时候才发现其中区别还是很鲜明的...先从单纯的字面意思来理解一下(有道词典): is not defined: 未定义 not defined: 未定义,没有定义,无法定义 && undefined: 不明确的 单从字面意思大体也能看出两者的区别...var a = {}console.log(a.b)// 未报错,提示: undefined 一个没有返回值的函数 demo7: 123 function f() {console.log(1)}...基本是同义的,但是在用法上还是有一些细微的差别的 null null表示“没有对象”,即此处不该有值 作为函数的参数,表示该函数的参数不是对象。...作为对象原型链的终点。 demo10:1 2Object.getPrototypeof(object.prototype) // null undefined 如上文demo2-demo7 部分

1.2K20

javascript模式 读书笔记一

JavaScript:基本概念 面向对象 只有五种基本类型不是对象:数值类型,字符串类型,布尔类型,空类型未定义类型。 函数实际上也是对象函数有属性方法。...该对象几乎等同于采用对象字面量或Object()创建的对象,区别在于它的constructor属性指向了所创建的函数,而不是指向内置的Object()函数。...类型 typeof global_fromfunc; //undefined类型 访问全局对象 var global=(function(){ return this; }()); 从内嵌函数的作用域访问.../代码的其他部分 //将一个方法添加到所有对象上 if(typeof Object.prototype.clone==="undefined"){ Object.prototype.clone=function...trois); //未定义 new Function()eval()的区别在于eval()会影响到作用于链,而Function更多地类似于一个沙盒。

99510

JavaScrip最容易犯的十大错误及其避免方法()

’ is not an object 3TypeError: null is not an object 有趣的是,在JavaScript中,nullundefined不一样,这就是为什么我们看到两个不同的错误消息...这是因为对于空白的对象引用,DOM API返回null。 任何执行处理DOM元素的JS代码都应该在创建DOM元素之后执行。 JS代码按照HTML中的布局从上到下进行解释。...TypeError: Object doesn’t support property 当您调用未定义的方法时,这是在IE中发生的错误。...这相当于Chrome中的错误“TypeError:’undefined不是函数”。 是的,不同的浏览器可以针对相同的逻辑错误具有不同的错误消息。...如果预期类型但尚未定义,它可以警告您。即使没有Typescript,在使用它们之前使用guard子句来检查对象是否未定义也是有帮助的。

14110

3.vue生命周期钩子函数有哪些?(vue生命周期的理解)

vue的钩子函数图解: vue的钩子函数使用总结: 1、beforeCreate(创建前):beforeCreate钩子函数,这个时候,vue实例的挂载元素$el和数据对象data都为undefined...无法访问到数据真实的domdata中的数据,可以在这里面使用loading 2、created(创建后):created函数中可以对data对象里面的数据进行使用更改,不会触发其他的钩子函数,一般可以在这里做初始数据的获取...,也可以结束loading; 这里进行dom操作需要使用vue.nextTick()方法 3、beforeMount(挂载前):beforeMount钩子函数,vue实例的$eldata都初始化了,但还是虚拟的...=5; }, destroyVue:function(){ this....$el); //输出[object HTMLDivElement],初始化成功 console.log("%c%s", "color:red","data : " + this.

69420

手写 Vue (二):响应式

,除了Object.definProperty外,浏览器还支持另一个全局的构造函数Proxy,用于自定义对象的基本操作,如:属性查找,赋值,枚举,函数调用等。...Object.defineProperty是针对对象的某个属性定义getset,而Proxy是针对整个对象。并且通过Proxy构造函数返回的是一个proxy实例,而不是对象。...因此,Proxy中的getset参数比Object.defineProperty的多了两个参数: obj: 要代理的目标对象,即 target key: 代理对象访问或设置的属性 以前文的data对象为例...还有最大不同的是,前者响应式在新返回的代理对象生效,而对原对象属性尽心访问修改是不会触发setget回调的。...$mount = function (id) { this.

67620

自己实现一个VUE响应式--VUE响应式原理

这样我们的getset就变成了这样: Object.defineProperty(this....第一个参数是新创建对象的原型对象,第二个参数可选,如果没有指定为 undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称...Object.defineProperty需要指定对象属性,对于多层嵌套的对象需要递归监听,Proxy可以直接监听整个对象,不需要递归; 2....Object.defineProperty的get方法没有传入参数,如果我们需要返回原值,需要在外部缓存一遍之前的值,Proxy的get方法会传入对象属性,可以直接在函数内部操作,不需要外部变量; 3.... set方法也有类似的问题,Object.defineProperty的set方法传入参数只有newValue,也需要手动将newValue赋给外部变量,Proxy的set也会传入对象属性,可以直接在函数内部操作

62851
领券