js

js 基本基础知识回顾

天涯浪子 提交于 2020-03-21 06:41:55
js中的一切的变量、函数、操作符等等都是区分大小写的。 js的基本的数据类型-》包含下面的5种: 1、undefined 2、Null 3、Boolean 4、Number 5、String js的复杂的数据类型就是--》Object js中不支持任何创建自定义的数据类型的机制。 js的typeof操作符的作用:主要是检测变量的数据类型的。对于一个值使用typeof:有以下几种可能的返回: 1、undefined------》值没有定义。 2、boolean--------》是布尔值 3、String-------》值是字符串 4、number-----》值是数值 5、object-------》值是对象或是null-----------(typeof null 输出object) 6、function-----》值是函数 undefined类型---》Undefined类型只有一个值 就是undefined 一般情况下,定义 var message; 如果没有初始化,则会默认是undefined。 Null类型: Null类型也是只有一个值 null,null表示一个空对象指针。 var car = null; alert(typeof car);---》object 定义变量用于保存对象,只要检查是否是null,就可以知道是否保存了对象的引用。 undefined

js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false

落花浮王杯 提交于 2020-03-21 05:22:27
preventDefault: preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为。既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就没有默认行为,调用当然就无效了。什么元素有默认行为呢?如链接<a>,提交按钮<input type=”submit”>等。 当Event对象的cancelable为false时,表示没有默认行为,这时即使有默认行为,调用 preventDefault也是不会起作用的。 我们都知道,链接<a>的默认动作就是跳转到指定页面,下面就以它为例,阻止它的跳转: //假定有链接 <a href="http://www.cnf2e.com/" id="testA" >cnf2e</a> var a = document.getElementById("testA"); a.onclick =function(event){//阻止默认行为 event.preventDefault(); } stopPropagation: stopPropagation也是事件对象(Event)的一个方法, 作用是阻止目标元素的冒泡事件,但是会不阻止默认行为 。什么是冒泡事件?如 在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发

JS经典面试题

徘徊边缘 提交于 2020-03-21 04:52:11
自己总结了一些JS面试题 希望能够帮助正在找工作的程序猿(●´∀`●) 1.js 实现一个函数对javascript中json 对象进行克隆 var oldObject ="sdf"; var newObject = JSON.parse(JSON.stringify(oldObject)); console.log(newObject); 或者 var a = 'dddd'; function cp(a){return JSON.parse(JSON.stringify(a))} console.log(cp(a)); 2.js 实现 ajax 请求或者submit请求时 锁屏功能以及开锁功能(请求时界面Loading以及元素不能点击,请求完成即消除Loading) function(url, fn) { var obj = new XMLHttpRequest(); // XMLHttpRequest对象用于在后台与服务器交换数据 obj.open('GET', url, true); obj.onreadystatechange = function() { if(obj.readyState == 4 && obj.status == 200||obj.status == 304) { loading.style.display = "none" } else {

通过共享文件夹来进行前后端独立开发

只谈情不闲聊 提交于 2020-03-21 03:21:33
3 月,跳不动了?>>> 最近在快速开发一个后台系统,前端使用了bootstrap和angular搭建,后端使用Java,由于前端采用的是单页富应用的Web App的构建方式,所以不适合做JSP页面,最后采用了【前端+ajax+后台】的前后端独立开发模式。 但这种开发模式,最大的问题是,ajax调用的跨域问题。跨域将带来很多问题,一方面服务器和浏览器不允许跨域调用,另一方面就算服务器端设置了可跨域调用,每一次跨域的ajax调用都会产生一个新的SESSIONID,无法保存会话状态。 所以,前端后独立开发最关键问题是解决跨域ajax调用后台接口的问题。这里主要分为两类处理方式: 一类:坚持跨域调用,采取跨域解决方法。详情可参考 JavaScript多种跨域方式 一类:把跨域改为同域,这时调用接口将没有任何压力 本文介绍的是采取第二种方式——把跨域改为同域! ##具体操作步骤 前后端独立开发,分别对应两台电脑,连接着相同的局域网。 在后端建立一个共享文件夹,然后在JSP工程里设置该目录对应一个开发的URL,比如: http://10.0.0.116:8040/jobnow-managementsite/ 。 然后前端把前端文件放到该目录下,打开浏览器,访问 http://10.0.0.116:8040/jobnow-managementsite/index.html 即可进行开发!

js 判断当前操作系统是ios还是android还是电脑端

偶尔善良 提交于 2020-03-21 00:54:13
js判断客户端是否是IOS或者是Android //如果返回true 则说明是Androidfunction is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == 'micromessenger') { return true; } else { return false;   } } js判断手机操作系统(ios或者是Android) $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 if (isAndroid) { //这个是安卓操作系统 } if (isIOS) {     //这个是ios操作系统 } }); js判断是否是电脑端 //如果返回的是false说明当前操作系统是手机端,如果返回的是true则说明当前的操作系统是电脑端function IsPC() {

有关JS中原型链及prototype和__proto__

半世苍凉 提交于 2020-03-20 20:06:57
原文: https://www.cnblogs.com/zlq92/p/10178286.html 一、prototype和 _proto_ 的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象;显示修改对象的原型的属性。 _ proto_ 是一个对象拥有的内置属性,是JS内部使用寻找原型链的属性,简单来说,在 javascript 中每个对象都会有一个 _ proto _ 属性,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去 _ proto _ 里找这个属性,这个 _ proto _ 又会有自己的 _ proto _,于是就这样一直找下去,也就是我们平时所说的原型链的概念. 二、有关于new 的过程 1 var Person = function(){}; 2 var p = new Person(); 3 4 //*new的过程拆分成以下三步:* 5 //(1) var p={}; 也就是说,初始化一个对象p; 6 //(2) p. __ proto __ = Person.prototype; 7 //(3) Person.call(p); 也就是说构造p,也可以称之为初始化p8 //实例化对象p的—proto—属性===构造函数Person的prototype属性 三、示例 1

JS 块级作用域

微笑、不失礼 提交于 2020-03-20 19:08:59
1 块作用域{ } JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中新增了块级作用域,使用let声明的变量只能在块级作用域里访问,有“暂时性死区”的特性(也就是说声明前不可用)。 块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。 <script type="text/javascript"> { var a = 1; console.log(a); // 1 } console.log(a); // 1 // 可见,通过var定义的变量可以跨块作用域访问到。 (function A() { var b = 2; console.log(b); // 2 })(); // console.log(b); // 报错, // 可见,通过var定义的变量不能跨函数作用域访问到 if(true) { var c = 3; } console.log(c); // 3 for(var i = 0; i < 4; i++) { var d = 5; }; console.log(i); // 4 (循环结束i已经是4,所以此处i为4) console.log(d); // 5 // if语句和for语句中用var定义的变量可以在外面访问到, // 可见,if语句和for语句属于块作用域,不属于函数作用域。 <

js验证上传图片文件大小,类型等

眉间皱痕 提交于 2020-03-20 18:32:12
<script> UpLoadFileCheck=function() { this.AllowExt=".jpg,.gif";//允许上传的文件类型 0为无限制 每个扩展名后边要加一个"," 小写字母表示 this.AllowImgFileSize=0;//允许上传文件的大小 0为无限制 单位:KB this.AllowImgWidth=0;//允许上传的图片的宽度 0为无限制 单位:px(像素) this.AllowImgHeight=0;//允许上传的图片的高度 0为无限制 单位:px(像素) this.ImgObj=new Image(); this.ImgFileSize=0; this.ImgWidth=0; this.ImgHeight=0; this.FileExt=""; this.ErrMsg=""; this.IsImg=false;//全局变量 } UpLoadFileCheck.prototype.CheckExt=function(obj) { this.ErrMsg=""; this.ImgObj.src=obj.value; //this.HasChecked=false; if(obj.value=="") { this.ErrMsg="\n请选择一个文件"; } else { this.FileExt=obj.value.substr(obj

js验证日期是否正确

我们两清 提交于 2020-03-20 15:02:12
/** * 验证日期是否正确 * 日期格式:yyyy-mm-dd,yyyy-m-d,yyyy/mm/dd,yyyy/m/d */ function checkDate(dateStr) { dateStr = dateStr.replace(/\//g, '-'); var dateReg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/; var rValue = dateStr.match(dateReg); if (rValue == null) { return false; } rValue[1] = parseInt(rValue[1], 10); rValue[2] = parseInt(rValue[2] - 1, 10); rValue[3] = parseInt(rValue[3], 10); var dateObj = new Date(rValue[1], rValue[2], rValue[3]); if (dateObj.getFullYear() != rValue[1] || dateObj.getMonth() != rValue[2] || dateObj.getDate() != rValue[3]) { return false; } return true; } 来源: https://www.cnblogs.com

深入理解js构造函数

狂风中的少年 提交于 2020-03-20 12:40:01
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式。对象字面量是一种灵活方便的书写方式,例如: var o1 = { p:”I’m in Object literal”, alertP:function(){ alert(this.p); } } 这样,就用对象字面量创建了一个对象o1,它具有一个成员变量p以及一个成员方法alertP。这种写法不需要定义构造函数,因此不在本文的讨论范围之内。这种写法的缺点是,每创建一个新的对象都需要写出完整的定义语句,不便于创建大量相同类型的对象,不利于使用继承等高级特性。 new表达式是配合构造函数使用的,例如new String(“a string”),调用内置的String函数构造了一个字符串对象。下面我们用构造函数的方式来重新创建一个实现同样功能的对象,首先是定义构造函数,然后是调用new表达式: function CO(){ this.p = “I’m in constructed object”; this.alertP = function(){ alert(this.p); } } var o2 = new CO(); 那么,在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事: var obj ={}; obj.__proto__ =