javascript
Month7
目前就职于字节跳动
展开
-
javascript中的==,!==,===,!===比较运算符
最近在学习前端,虽说前端入门简单,但是要学深入是真的不容易。学前端,最基础的就是三剑客,html,css,javascrpit了而js更是重点中的重点,javascript虽然和java名字很像,但是和java是完全不一样啊。习惯了c和java的我对于js的变量提升,闭包,原型都是一脸懵逼啊..好了现在写正事,仔细探讨一下js中的==,!==,===,!===1.==和原创 2017-10-19 16:25:04 · 574 阅读 · 0 评论 -
实现一个javascript new的功能
要想实现new的功能,我们首先要知道new是干什么的呢?在js中 var a = new A() 后1.创建一个空对象obj{}2.将a的this指向obj{}3.将a的_proto_指向A的prototype4.执行A的构造函数5.返回obj 代码级实现:function Test (name) {this.name = name;this.test ...原创 2018-08-18 19:19:02 · 1248 阅读 · 0 评论 -
js 遍历dom tree
// 深度优先遍历算法描述:(1)访问结点v。(2)找到v的第一个邻接点w。(3)如果邻接点w存在且未被访问,则从w出发深度优先遍历图;否则,结束。(4)找顶点v关于w的下一个邻接点,转(3)。递归算法:function dfs (node) {console.log(node); // 访问nodefor(var i=0;i<node.children....原创 2018-08-19 16:11:51 · 648 阅读 · 0 评论 -
封装一个javascript instanceOf函数
原理:就是左边的参数沿原型链向上查找,不想多打字,直接贴代码function myInstanceOf (left,right) {let rightPrototype = right.prototype;let leftProto = left.__proto__;while(true) {if(leftProto === null){return false;}...原创 2018-09-09 18:10:32 · 747 阅读 · 0 评论 -
javascript new运算符的过程及其模拟实现
new一个对象的过程var a = new A();(1)创建一个空对象 newObj(2)将newObj的__proto__指向A的prototype(3)执行A的构造函数(4)return newObj function _new () {var newObj = {};var constructor = Array.prototype.shift.c...原创 2018-10-04 10:13:59 · 300 阅读 · 0 评论 -
原生js统计页面内所有标签的种类和个数
var all = document.getElementsByTagName('*');var tags = [];for(var i=0;i<all.length;i++){tags.push(all[i].tagName.toLocaleLowerCase());}var res = {};for(var i=0;i<tags.length;i++){...原创 2019-01-13 23:23:56 · 1824 阅读 · 0 评论 -
重学ES6(三) proxy代理对象
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。ES6...原创 2019-07-02 10:34:23 · 183 阅读 · 0 评论 -
重学ES6(四) generator 与async函数
ES6新增了Generator与async函数一、Generator的语法形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态。function* Gen(){ yield 1; yield 2; return 3;}var g = G...原创 2019-07-03 14:36:13 · 393 阅读 · 0 评论 -
重学ES6(一) var let 和 const
var 是ES5中声明变量的方式,ES6中新增了let 和 const两种生命变量的方式。1.let用法类似于var 基本用法:let a = 1;var a = 1;let与var的区别:1) 块级作用域var 声明的变量,不存在块级作用域,只存在函数作用域。比如说console.log(a) // undefined{ var a = 1;}...原创 2019-06-28 12:41:12 · 160 阅读 · 0 评论 -
javascript原型链
首先,函数有prototype属性,而对象(除Object)都有_proto_属性 _proto_可以理解为:构造器的prototype_proto_指向谁呢1.当以函数字面量的形式创建一个对象时var a={};_proto_指向Object的prototype2.当以构造器的形式创建一个对象时var A=function(){};var a=new A();_...原创 2018-02-25 01:27:53 · 240 阅读 · 0 评论 -
jQuery实现下雪效果
先上效果图:基本原理:动态生成雪花div,设置它的定位为绝对定位。初始时,设置它的位置为距顶部-30px。用Math.random()方法使雪花的大小随机,初始水平位置和最终水平位置随机。初始和最终透明度随机。然后用clone()方法复制雪花,通过jQuery动画方法让其下落,下落时间为固定时间+浏览器高度决定的时间。源代码:{CSDN:CODE:2原创 2017-11-07 22:24:55 · 2035 阅读 · 0 评论 -
javascript基本数据类型和typeof方法的总结
javascript中五种基本数据类型:Number String Boolean Null Undefined在ES6中新增了Symbol使用typeof运算符可以查看对象的数据类型,不过要注意,typeof(null)将会返回object,《JavaScript》一书中写道:这是一个设计时的巨大错误。typeof运算符返回的结果有: number string undefined ...原创 2017-11-02 19:17:19 · 328 阅读 · 0 评论 -
jQuery实现瀑布流
这几天做比赛项目的时候要写一个表白墙,用了瀑布流的方式实现,现在来说一下这个瀑布流是怎么实现的。瀑布流是什么就不再说了,不知道的可以看看这个:点击打开链接现在说说瀑布流的原理:先计算一行最多容纳几个div 而后将第一行摆满div,将他们的高度存入数组找出第一行中高度最小的div,第二行中的div距离顶部的距离就是该高度+留白,而后更新数组这样就基本实现瀑布流了代码:ht原创 2017-12-18 19:29:51 · 289 阅读 · 0 评论 -
javascript基本数据类型和引用数据类型
javascript变量有两种不同的数据类型:基本类型和引用类型。基本类型指的是简单的数据段,引用类型指的是由多个值构成的对象。基本类型有6种 null undefined number string boolean Symbol(ES6)基本类型和引用类型的区别:1基本类型是不可变的,引用类型的值是可变的。2基本类型的比较是值的比较,引用类型的比较是引用的比较。3.基本类...原创 2018-02-26 17:13:59 · 557 阅读 · 0 评论 -
手写实现一个promise
function myPromise (callback) {let self = this;self.status = 'pending';self.value = undefined;self.reason = undefined;self.fullFiledArr = [];self.rejectedArr = [];function resolve (value...原创 2018-08-14 15:38:51 · 956 阅读 · 0 评论 -
javascript深拷贝与浅拷贝
深拷贝:复制出的新变量的改变不会影响原变量。浅拷贝:复制出的新变量的改变会影响原变量。js中实现深拷贝的几种方法和优缺点:1手动实现(只使用于一层对象,实际是浅拷贝?) function deepClone(obj,copy){copy=copy||{};for(var key in obj){copy[key]=obj[key];}return copy;...原创 2018-03-02 18:12:05 · 290 阅读 · 0 评论 -
重学ES6(二) Symbol数据类型
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。1.基本用法Symbol值通过Symbol函数来生成let a = Symbol();console.log(a); // SymbolSymbol可以接收一个字符串作为参数,表示对Symbol实例的描述。let a = Symbol('aa');Symbol生成的值都是独一无二的,即使是相同参数的Sy...原创 2019-06-29 00:18:42 · 138 阅读 · 0 评论