var函数

在Vue文件中引入外部URL链接

北城余情 提交于 2019-12-04 06:02:59
前言:最近做一个vueNuxt的项,没有index.html 也没有main.js项目需要引入一些外部的包, 没什么技术含量只是一种思路 在vue生命钩子函数中动态创建JavaScript标签追加到HTML页面上引入 (function() { var hm = document.createElement("script"); hm.src = "需要引入的外部Url链接"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); 来源: https://www.cnblogs.com/zhonglinke/p/11834608.html

看不懂源码?先来恶补一波Object原型吧

荒凉一梦 提交于 2019-12-04 05:45:09
目录 Object Object属性 1、Object.prototype 2、Object.name Object方法 1、Object.assign() 2、Object.create() 3、Object.seal() 4、Object.freeze() 5、Object.is() 6、Object.preventExtensions() 7、Object.getOwnPropertyNames() 8、obj.hasOwnProperty() 9、Object.getOwnPropertyDescriptor() 10、Object.getOwnPropertyDescriptors() 11、Object.getOwnPropertySymbols() 12、Object.defineProperties() 13、Object.values() 14、Object.entries() 15、Object.fromEntries() 16、Object.getPrototypeOf() 17、Object.setPrototypeOf() 18、Object.toString() 原型方法 1、apply() 2、arguments 3、bind() 4、call() 5、caller() 6、constructor() 7、length 8、name 9

js

自闭症网瘾萝莉.ら 提交于 2019-12-04 04:34:01
存储(变量) Js 中变量是存在 栈内存 中 Js 中的内存分两种 栈内存 堆内存 栈内存 就是存放变量的 堆内存 就是存代码块 object 和 function Js 特殊在它是一个 弱类型语言: 定义变量的时候没有明确指明它的数据类型,而是有后面赋的值决定它的类型 Var a=”” var a=12; var a=[];var a={} Java 是强类型语言 定义变量的时候就指明它的数据类型,后面的赋值就不能随便赋值了,必须和数据类型保持一致。 String a=”123”; number a=12; Boolean a=true; Js 内存存放机制 基本数据类型: string number Boolean undefined null 如果变量后面的值是基本数据,就直接存在栈内存中。栈里面要求变量不能重名,如果重名后者就会覆盖前者。 引用数据类型: object array function 如果变量后面是引用数据类型,将后面的代码块存在堆内存中,然后将堆内存中的内存地址赋值给前面的变量。 备注 : 浏览器在执行 js 代码前,找出所有的关键字 var 和 function 将定义的变量存在内存中,存放完毕之后按照自上向下的顺序一步一步执行,当 使用某个变量的时候( console.log(xxx) ) ,就会向内存查找,有就直接使用,没有就 xxx is not

闭包的理解

爷,独闯天下 提交于 2019-12-04 03:42:56
闭包是Javascript语言特有的"链式作用域"结构(chain scope)变量的作用域有三种:全局作用域和局部作用域以及块作用域(ES6)。,子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。 闭包:JavaScript高级程序设计里写闭包是有权访问另一个函数作用域中的变量的函数,使作用域得到了延长。我们有时候在函数外部需要得到函数内的局部变量。而闭包就是将函数内部和函数外部连接起来的一座桥梁。 闭包的优点: 是闭包封住了变量作用域,有效地防止了全局污染 可以读取其他函数内部的变量,让这些变量的值始终保持在内存中,不会随着函数的结束而自动销毁。 可以很巧妙地实现静态私有变量、私有函数方法等 闭包的缺点: 由于闭包会使得函数中的变量都被保存在内存中,所以存在内存泄漏的风险 在浏览器端可以通过强制刷新解决,对用户体验影响不大 在服务端,由于 node 的内存限制和累积效应,可能会造成进程退出甚至服务器沓机 使用场景 :函数内部变量只初始化一次 解决方法是显式对外暴露一个接口,专门用以清理变量: /*1.清除失败,因为每次先执行mockData()后才会执行闭包,所以每次都会在局部作用域创建常量mem*/ function mockData() { const mem = {name:"lucas",age:22}; return

js基础知识复习

ぃ、小莉子 提交于 2019-12-04 00:31:53
1.script标签 * async是开始就下载,下载完毕就执行。若同时有两个async的script,没有先后顺序 * defer是立即下载,延迟执行。脚本在执行时不会影响页面的构造。HTML5规定,若同时有两个defer的script,要求第一个优先于第二个,但是实际不是,所以最好包含一个defer 执行过程:   如果是async异步----加载完成之后立马执行   如果是defer----页面加载完之后才会执行 2.不引入第三方变量交换两个值(数字/字符串) 一:假如是数字 (1)通过两个值相加 var num1=10; var num2=20; num1=num1+num2;//num1=30 num2=num1-num2;//num2=10 num1=num1-num2;//num1=20 console.log(num1); console.log(num2); (2)通过位运算符 var num1 = 10; var num2 = 20; num1 = num1 ^ num2;//num1=30 num2 = num1 ^ num2;//num2=10 num1 = num1 ^ num2;//num1=20 console.log(num1); console.log(num2); 二:通用的(无论是字符串、数字、对象) (1)ES6的解构 let a = 1,

rem js相关

浪子不回头ぞ 提交于 2019-12-04 00:06:23
!function(n){ var e=n.document, t=e.documentElement, i=720, d=i/100, o="orientationchange"in n?"orientationchange":"resize", a=function(){ var n=t.clientWidth||320;n>720&&(n=720); t.style.fontSize=n/d+"px" }; e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1)) }(window); 规则就是,调用函数,放两个参数,第一个参数,是设计稿的宽度,第二个参数是px与rem的转换比例,通常会写100(因为好算);当然了,要把这段js代码最好封装在一个单独的js文件里,并且放在所有的css文件引入之前加载。 其中 var n=t.clientWidth||320;n>720&&(n=720); 的意思是:如果clientWidth的值获取不到,n就等于320,如果n>720成立就会执行n=720的操作 M && N中,若M为假,则N不被执行; M||N中,若M为真,则N不被执行。 上面这段js手机上在有表单的时候,在输入法弹出的时候会失灵 代码一:

细说数组常用遍历的方法

怎甘沉沦 提交于 2019-12-04 00:04:45
前言 本文主要介绍数组常见遍历方法:forEach、map、filter、find、every、some、reduce,它们有个共同点:不会改变原始数组。 一、forEach:遍历数组 var colors = ["red","blue","green"]; // ES5遍历数组方法 for(var i = 0; i < colors.length; i++){ console.log(colors[i]);//red blue green } // ES6 forEach colors.forEach(function(color){ console.log(color);//red blue green }); 我们再来看个例子:遍历数组中的值,并计算总和 var numbers = [1,2,3,4,5]; var sum = 0; numbers.forEach(number=>sum+=number) console.log(sum)//15 二、map:将数组映射成另一个数组 map通过指定函数处理数组的每个元素,并返回处理后新的数组,map 不会改变原始数组。 forEach和map的区别在于,forEach没有返回值。 map需要返回值,如果不给return,默认返回undefined 使用场景1 假定有一个数值数组(A),将A数组中的值以双倍的形式放到B数组

用canvas实现简单的下雪效果

风格不统一 提交于 2019-12-03 23:34:06
首先新建一个html文件,将 body 的背景设置为天空的那种深蓝色,并创建一个 canvas ,canvas的操作逻辑都放在 snow.js 中: <!DOCTYPE html> <head> <style> body { background-color: #102a54; } </style> </head> <body> <canvas id='sky'></canvas> <script src="snow.js"></script> </body> </html> canvas的操作将在页面加载完之后执行,首先获取到canvas的二维context,并将canvas宽高设置为window的宽高,确保天空背景铺满整个窗口。 snow.js : window.onload = function () { var canvas = document.getElementById('sky'); var ctx = canvas.getContext('2d'); var W = window.innerWidth; var H = window.innerHeight; canvas.width = W; canvas.height = H; } 天空背景完成后,我们来创建雪花,思路比较简单,我们让屏幕上保持一个额定数量的雪花,并给每个雪花一个随机的位置

js 数组

冷暖自知 提交于 2019-12-03 23:28:23
定义     数组是使用单独的变量名来存储一系列的值。 定义方式      空数组 var 变量名 = new Array();  var 变量名 = []; var 变量名 = new Array(数组的长度);      有数值的数组  var 变量名 = new Array("1","2"); var 变量名 = [1,2]; 往数组中添加元素      通过下标,逐个添加,或者循环添加      push方法 attr.push() 遍历数组     for循环 var aa = new Array("1","2","3");for(var i = 0;i<aa.length;i++){alert(aa[i]);}     for-in  var aa = new Array("a","b","c");for(var b in aa){alert(aa[b]);} 对数组的内置操作函数 详见代码 代码 <script type="text/javascript"> //向数组中添加值 // arr.push()末尾添加 arr.unshift()前面添加 其值是得到新数组长度值加1; // var arr=new Array(1,2,3,4,5); // var len=arr.push(9,7);//这样赋值出来的是下标加一 // console.log(len,arr)

three.js (四)离散层次细节level of details

巧了我就是萌 提交于 2019-12-03 23:15:31
LOD 处理比较大的外部地面场景中比较有用, 一般用于绘制地形。 首先通过可视体的切割删除不用的地形块,接着通过LOD 对照相机不同距离的地形块进行层次细节调整。 这里采用最简单的LOD 方法。 首先地形有n*n 的块构成, 这些块共同构成一个大平面; 首先根据每个块到照相机的距离 计算细节层次, 例如假设由5*5 个块构成地形, 每个块1*1大小, 有4个细节层次, 当块距离照相机 小于2 层次 0 距离小于4 层次 1 小于6 层次 2 其它层次 3 首先构造一个Object3D 作为整个地面的代表。 myGame.Earth = function(){ THREE.Object3D.call(this); this.curPatches = []; this.patches = []; this.width = 5; this.height = 5; this.patch_width = 1; this.patch_height = 1; for(var i = 0; i < this.height; i++) { for(var j = 0; j < this.width; j++) { this.patches.push(1);//distance ---> detail 0 1*1 } } }; myGame.Earth.prototype = new THREE