js代码

用原生JS封装一个Table组件

怎甘沉沦 提交于 2020-02-15 01:39:22
在写项目的时候,我们经常会用一些组件,比如:模态框、表格、分页等。组件的应用大大减少了项目的开发成本,同时也提高了代码的质量等。所以,封装组件成为了每个人的必须拥有的技能。本篇文章将使用原生JS封装一个Table组件。 组件封装 实现目标 以antd中的Table组件为目标,实现以下功能: 传width值控制表格宽度。 columns与dataSource中的数据相对应,没有对应数据的地方显示为空。 实现columns中的render函数方法。 对columns数据中key值的检查,没有或者重复,给出警告。 columns中width可设置列宽 columns中align值控制内容在表格中所处的位置。 搭建结构 首先,先搭建一下代码的结构 window.Table(function(){ class Table { constructor(options) { // 获取所需要数据 this.columns = options.columns; this.dataSource = options.dataSource; this.width = options.width; this.init(); // 调用初始化函数 } // 初始化 init() { } } return function proxy(options = {}) { options = Object

JS的内建函数reduce

陌路散爱 提交于 2020-02-15 01:12:08
reduce函数 ,是ECMAScript5规范中出现的数组方法。在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清楚浏览器的js引擎是如何在C++层面实现这两个方法,但是可以肯定的是reduce方法肯定也存在数组的遍历,在具体实现细节上是否针对数组项的操作和存储做了什么优化,则不得而知。 数组的reduce方法的应用 reduce方法有两个参数,第一个参数是一个callback,用于针对数组项的操作;第二个参数则是传入的初始值,这个初始值用于单个数组项的操作。需要注意的是,reduce方法返回值并不是数组,而是形如初始值的经过叠加处理后的操作。 reduce方法最常见的场景就是叠加。 var items = [10, 120, 1000]; // our reducer function var reducer = function add(sumSoFar, item) { return sumSoFar + item; }; // do the job var total = items.reduce(reducer, 0); console.log(total); // 1130 可以看出,reduce函数根据初始值0,不断的进行叠加,完成最简单的总和的实现。 前文中也提到

JS对象的概念、声明方式等及js中的继承与封装

送分小仙女□ 提交于 2020-02-14 23:33:27
对象的遍历 对象可以当做数组处理,使用for in var person={}; person.name="cyy"; person.age=25; person.infos=function(){ alert(this.name+" "+this.age); } for(var i in person){ console.log(i);//属性名或方法名 console.log(person[i]);//属性值或方法值 } 使用构造函数声明的对象,需要实例化之后再进行遍历 function Person(){ this.name="cyy"; this.age=25; } var p=new Person(); for(var i in p){ console.log(i+":"+p[i]); } 对象在内存中的分布 参考以下神图 封装:把对象的内部数据和操作细节进行隐藏 提供private关键词隐藏某些属性和方法,限制被封装的数据或者内容的访问,只对外提供一个对象的专门访问的接口 接口一般为调用方法 不过js没有提供这样的关键词,但可以通过闭包来实现 函数内部声明的变量,外部是访问不到的 function fn(){ var n=1; function fn2(){//特权方法 alert(++n); } return fn2; } fn()();//2 //封装

在Python中执行javascript

对着背影说爱祢 提交于 2020-02-14 14:35:33
在Python中执行javascript - 熊猫凶猛 - 博客园 在Python中执行javascript 在使用python抓取网页的过程中,有的时候需要执行某些简单的javascript,以获得自己需要的内容,例如执行js里面的document.write或者document.getElementById等。自己解析js代码显然有点吃力不讨好,因此最好能找到一些可以解析执行js的python库。 google之可以找到三个候选者,分别是微软的ScriptControl,v8的python移植 PyV8 ,还有SpiderMonkey的Python移植 Python-Spidermonkey 。其中ScriptControl只能在windows上运行,需要win32com库;PyV8能在windows和*nix上运行,但是需要装PyV8库;而SpiderMonkey是mozilla的js引擎在python上的移植,感觉已经不太活跃,因此没用。 微软的ScriptControl中对执行js最重要的方法就是addObject与eval,通过addObject,我们可以向js执行环境注入一个我们自定义的document对象,通过eval方法,我们可以执行一段js代码。注入自定义对象需要使用win32com.server.util.wrap方法,将一个python对象包装为COM对象

原生js生成九宫格布局

 ̄綄美尐妖づ 提交于 2020-02-14 08:27:35
话不多说,直接上图 点击3列,他就变成3列布局 点击4列,变成四列 先来看html代码 < style > * { padding : 0 ; margin : 0 ; } #content { margin - top : 20 px ; position : relative ; } #content . box { width : 100 px ; height : 200 px ; margin : 5 px 0 ; border : 1 px solid red ; } < / style > < div id = "btns" > < button > 3 列 < / button > < button > 4 列 < / button > < button > 5 列 < / button > < / div > < div id = "content" > < div class = "box" > < / div > < div class = "box" > < / div > < div class = "box" > < / div > < div class = "box" > < / div > < div class = "box" > < / div > < div class = "box" > < / div > < div class =

javascript中如何使用js脚本模拟\"request\"获取url后参数值呢?

此生再无相见时 提交于 2020-02-13 23:52:26
转自:猫猫小屋--js获取url后参数信息 摘要: 下文讲述javascript中使用js代码获取url地址后面的参数值的方法分享,如下所示; 实现思路: 使用正则表达式对参数值进行匹配,获取参数后的相关值 例: 获取url:http://www.maomao365.com?name=test123&p=90 String.prototype.urlRequestForm=function(name){ var r=new RegExp('(^|\\?|&)'+name+'=([^&]*|$)'); var url=this.replace(/&/g,'&') var t=url.match(r); return t===null?null:unescape(t[2]); } var urlInfo= "http://www.maomao365.com?name=test123&p=90"; alert(urlInfo.urlRequestForm("name")); alert(urlInfo.urlRequestForm("p")); [ 来源: https://www.cnblogs.com/lairui1232000/p/12305608.html

JS高阶编程技巧--柯理化函数

梦想的初衷 提交于 2020-02-13 16:12:59
首先看一段代码: let obj = { x: 100 }; function fn(y) { this.x += y; console.log(this); } 现在有一个需求:在1秒后,执行函数fn,并让其this指向obj。 如果写成 setTimeout(fn, 1000); 这么写的话,fn函数中的this是指向window的,而且也没有传递参数。 如果写成 setTimeout(fn(200), 1000); 这么写的话,this指向依然是window,而且相当于立即执行fn函数,并把结果赋给定时器1秒后再执行,这样肯定不行。 如果写成 setTimeout(fn.call(obj,200), 1000); 这么写的话,用call或apply虽然改变了this指向,但都是函数立即执行并把返回结果赋给了定时器,依然无法完成需求。 如果写成 setTimeout(function() { fn.call(obj, 200); }, 1000); 这么写的话,用一个匿名函数包起来,等到1秒后执行匿名函数里边的代码,这样便可以完成上述需求。 从中我们可以看出,在某一个阶段之后执行某些代码,我们需要预先把this指向、参数等预先准备好,这种预先处理的思想即柯理化思想。 即,柯理化函数的思想:利用闭包的机制,把一些内容事先存储和处理了,等到后期需要的时候拿来用即可。 当然

模块化工具require 学习笔记

拟墨画扇 提交于 2020-02-13 12:13:17
一:早就听说过模块化工具require.js的大名,之前也是由于自己的网页上引用了诸多的js,而且一堆的js引用放在那里,一个依赖另一个,导致我不敢随意改动各个js的位置,而且有时页面内容一多起来,js加载也使得本来的html内容出现响应延迟。因此,在网上查过后,便得知解决方法是使用AMD异步模块-require.js。 二:了解过require.js后,我们一般都知道它具有如下优点: 1,防止js加载阻塞页面渲染,实现js文件的异步加载,避免网页失去响应; 2,使用程序调用的方式加载js,防止出现如下丑陋不堪的一串引用,同时管理模块之间的依赖性,便于编写与维护; <script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> <script type="text/javascript" src="d.js"></script> <script type="text/javascript" src="e.js"></script> <script type="text/javascript" src="f.js"></script>

js代码预解析

为君一笑 提交于 2020-02-13 10:29:07
1、var一般用于声明变量,预解析代码的时候,等号后面的赋值过程不会执行,所以预解析时的var变量都是未定义的 2、function声明的函数,预解析的时候,值就是函数里面的内容 例:console.log(c)   var c = 1;   console.log(c)   function c( ){console.log(2)}   预解析过程:var c;       function c( ){console.log(2)};       console.log(c)  // function c( ){console.log(2)};       c = 1;       console.log(c)  // 1        来源: https://www.cnblogs.com/cuishuangshuang/p/12302385.html

JS的基本概念和数据类型

佐手、 提交于 2020-02-13 00:40:11
什么是 JavaScript 语言 JavaScript 是一种轻量级的脚本语言。所谓 “ 脚本语言 ” ,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的 “ 脚本 ” , 本身不提供任何的 API ,都要靠宿主环境( host )提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API 。 JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语法构造(比如操作符、控制结构、语句)和标准库(就是一系列具有各种功能的对象比如 Array 、 Date 、 Math 等)。除此之外,各种宿主环境提供额外的 API (即只能在该环境使用的接口),以便 JavaScript 调用。以浏览器为例,它提供的额外 API 可以分成三大类。 浏览器控制类:操作浏览器 DOM 类:操作网页的各种元素 Web 类:实现互联网的各种功能 JavaScript 与 Java 的关系 JavaScript 和 Java 的关系。它们是两种不一样的语言,但是彼此存在联系。JavaScript 的基本语法和对象体系,是模仿 Java 而设计的。但是,JavaScript 没有采用 Java 的静态类型。”。JavaScript 语言的函数是一种独立的数据类型,以及采用基于原型对象(prototype)的继承链