js

js 函数如何判断是被new还是被函数调用

喜夏-厌秋 提交于 2020-03-23 09:52:37
function Ajanuw() { // 函数被new上下问会改变 if (this instanceof Ajanuw) { console.log("new"); } else { console.log("fun"); } } Ajanuw(); new Ajanuw(); 函数调用返回自己的实例 const l = console.log; function Ajanuw() { if (!(this instanceof Ajanuw)) { return new Ajanuw(); } } l(Ajanuw()); // Ajanuw {} l(new Ajanuw()); // Ajanuw {} 来源: https://www.cnblogs.com/ajanuw/p/12550173.html

js获取节点 dom操作

十年热恋 提交于 2020-03-23 09:35:57
先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素 原生的JS获取ID为test的元素下的子元素。可以用: 比如: <div id="dom"> <div></div> <div></div> <div></div> </div> var a = docuemnt.getElementById("dom").getElementsByTagName_r("div"); 这样是没有问题的 此时a.length=3; 但是我们现在换一种方法获取就是我上章提到的var b = document.getElementByIdx_x("dom").childNodes;如果 这样alert(b.length)IE浏览器上没问题还是3,但是在FF浏览器上会提示是4,这就是因为FF把换行也当做一个元素了。 所以我们必须处理一下才能用JS的那些属性。处理思想很简单就是遍历一下这些元素。把元素类型为空格而且是文本都删除。处理函数是这样的 function del_space(elem){ var elem_child = elem.childNodes;//得到参数元素的所有子元素 for(var i=0;i<elem_child.length;i++){ /

JS基础篇--HTML DOM classList 属性

跟風遠走 提交于 2020-03-23 09:07:09
页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增、删除、修改节点上的CSS类。使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类。 添加类(add) document.getElementById("myDIV").classList.add("mystyle"); 为 <div> 元素添加多个类: document.getElementById("myDIV").classList.add("mystyle", "anotherClass", "thirdClass"); 移除类(remove) 使用remove方法,你可以删除单个CSS类: document.getElementById("myDIV").classList.remove("mystyle"); 移除多个类: document.getElementById("myDIV").classList.remove("mystyle", "anotherClass", "thirdClass"); 切换类(toggle) 这个方法的作用就是,当myDiv元素上没有这个CSS类时,它就新增这个CSS类;如果myDiv元素已经有了这个CSS类,它就是删除它。就是反转操作。 document.getElementById("myDIV").classList

Js对象

微笑、不失礼 提交于 2020-03-23 06:19:43
Function引用类型创建的对象也叫函数。 一、创建函数:   1.function 函数名(x,y,z...){     各种js语句     }   2.var 函数名=function(x,y,z...){   各种js语句     } 二、调用函数:   函数名(); 三、函数可以有返回值:关键字return,如 1 var $1=function (){ 2 console.log('function $1 running~'); 3 return 2; 4 }; 5 console.log($1());   输出结果如下: 四、function对象有默认属性length,代表形参的个数。 Array引用类型创建的对象也叫数组。 一、是数据的集合,数组里面的值称为数组元素; 二、数组元素可以是基本数据类型,也可以是数组或Object类型; 三、实例: 1 <script type="text/javascript"> 2 var arr1 = new Array(); 3   arr1[1]=3; 4   arr1[2]={ 5     name:'zrh' 6   }; 7   var arr2=new Array('blue','gray','red'); 8 var arr3 =[5,'2','zrh',true]; 9   console.log(arr1[1]

js 图片上传(iframe)

安稳与你 提交于 2020-03-23 05:08:48
//上传图片构造函数 function FileUploader(targetId, uploadInputId, uploadFormId, picAreaId, delUrl, targetInput, fileName) { this.targetId = targetId; this.uploadInputId = uploadInputId; this.uploadFormId = uploadFormId; this.picAreaId = picAreaId; this.delUrl = delUrl; this.targetInput = targetInput; this.iframeName = undefined; //当前iframe的名字 this.fileName = fileName; //当前iframe的名字 return { upload: this.upload, apendPic: this.apendPick }; }; //开始上传 FileUploader.prototype.upload = function () { $('#' + this.targetId).click(function () { $('#' + this.uploadInputId).click(); }); }; //添加图片 FileUploader

js 添加事件 attachEvent 和 addEventListener 的用法

限于喜欢 提交于 2020-03-23 02:45:09
一般我们在JS中添加事件,是这样子的 ? 1 obj.onclick=method 这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢? ? 1 2 3 obj.onclick=method1; obj.onclick=method2; obj.onclick=method3; 如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法 ? 1 2 3 4 //object.attachEvent(event,function); btn1Obj.attachEvent( "onclick" ,method1); btn1Obj.attachEvent( "onclick" ,method2); btn1Obj.attachEvent( "onclick" ,method3); 使用格式是前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是 method3->method2->method1 可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法 ? 1 2 3 4 //element.addEventListener(type

【JavaScript】JS总结 – 乱

会有一股神秘感。 提交于 2020-03-22 22:50:31
一、 重要:js中的function函数声明、函数表达式 // 函数声明 // Ex: 会在代码执行之前提前加载到作用域中,即js解析器会优先读取,确保在所有代码执行之前声明已经被解析;所以可以在定义之前调用。 function test(){ document.write("test() invoke!" + "<br>"); } // 函数表达式 // Ex: 在代码执行到那一行的时候才会有定义;定义之后才能调用。 var t2 = function(){ document.write("t2() invoke!" + "<br>"); } //函数声明:会在代码执行之前提前加载到作用域中 test("1"+name); // test() invoke!14 var name =1; function test(name){ document.write("test() invoke!" + name + "<br>"); } name=2; test("2"+name); //test() invoke!22 //函数表达式:在代码执行到那一行的时候才会有定义 var t2; //t2(); // t2 is not a function test("21"+name); //test() invoke!212 name =3; test("22"+name); /

关于js返回上一页的实现方法

怎甘沉沦 提交于 2020-03-22 22:37:27
以前在提交表单的时候,如果提交出错返回的时候信息内容全没了,我不知道要怎么保存,就开始了那种最愚蠢的做法,将填写的数据设置到session中,让后取出来用,不过没有试成功,总是有错,无意之中在我那本js的资料书里看到了javascript:history.go(-1);的方法,呵呵,尝试了一次,真的实现了数据的保留总结一下。有时间的话可以好好研究一下。 下面是常用代码: <a href="<a href="javascript :history.back(-1)">返回上一页</a> 或 <a href="javascript :;" onClick="javascript :history.back(-1);">返回上一页</a> 如果是用按钮做的话就是: <input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一页"> 用图片做的话就是: <a href="javascript :;" onClick="javascript :history.back(-1);"><img src="图片路径" border="0" title="返回上一页"></a> [color=#FF0000]几秒钟后[/color]自动返回上一页代码:(加入两个head间,3000表示3秒)

js:字符串(string)转json

此生再无相见时 提交于 2020-03-22 22:31:40
第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式。 正确的转换方式需要加(): testJson = eval("(" + testJson + ")"); eval()的速度非常快,但是他可以编译以及执行任何 JavaScript 程序,所以会存在安全问题。在使用eval()。来源必须是值得信赖的。需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。 js代码: [javascript] view plain copy function ConvertToJsonForJs() { //var testJson = "{ name: '小强', age: 16 }";(支持) //var testJson = "{ 'name': '小强', 'age': 16 }";(支持) var testJson = '{ "name": "小强", "age": 16 }' ; //testJson=eval(testJson);//错误的转换方式 testJson = eval( "(" + testJson + ")" ); alert(testJson.name); } 第二种方式使用 jQuery

模块化加载require.js

扶醉桌前 提交于 2020-03-22 22:31:20
一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。   <script src="1.js"></script>   <script src="2.js"></script>   <script src="3.js"></script>   <script src="4.js"></script>   <script src="5.js"></script>   <script src="6.js"></script> 这段代码依次加载多个js文件。 这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。 require.js的诞生,就是为了解决这两个问题:      (1)实现js文件的异步加载,避免网页失去响应;   (2)管理模块之间的依赖性,便于代码的编写和维护。 二、require.js的加载 使用require.js的第一步,是先去官方网站 下载 最新版本。