面向对象编程
Objects对象的原生要领分红两类:Object自身的要领(静态要领)和Object的实例要领。注重Object是JavaScript的原生对象,一切的其他对象都是继续自Object对象,故别的对象都是Object的实例。
Object的静态要领
Object.keys()要领与Object.getOwnPropertyNames(),参数是对象,返回一个数组,数组的值是改对象自身的一切属性名,——辨别在于keys返回可罗列的属性,getOwnPropertyNames返回不可罗列的属性值。
Object的实例要领
Object.prototype.valueOf():返回当前对象的对应值.
Object.prototype.toString():返回当前对象对应的的字符串情势.
Object.prototype.toLocaleString(): 返回当前对象对应的的当地字符串情势.
Object.prototype.hasOwnProperety(): 推断某个属性是不是为当前对象的自身属性,照样继续自原型对象
Object.prototype.isPrototypeOf(): 推断当对象是不是为另一个对象的原型.
Object.prototype.propertyIsEnumerable(): 推断某个属性是不是为罗列.
Array对象
<article>
对象是一个容器,封装一些属性(property)和要领的鸠合,属性是对象的状况,要领是对象的行动.JavaScript言语的对象系统,不是基于”类”的,
而是基于组织函数(constructor)和原型(prototype).
组织函数是对象的模板,特地用来天生实例对象的函数.组织函数的首字母大写,内部运用this关键字,天生对象的时刻
,必需运用new敕令.
new敕令: 实行组织函数,返回一个实例对象.
Object.create()建立实例对象.
this关键字: 属性和要领”当前”地点的对象,总返回一个对象.
绑定this的三种要领:
Function.prototype.call()
Function.prototype.apply()
Function.prototype.bind()
运用场所: 全局环境是运用this,指的是顶层对象window.在组织函数中的this,指的是实例对象
严厉形式: “use strict”; 严厉形式必需从代码的一最早就见效,即写在第一行.
异步操纵:
浏览器的JS引擎有多个线程,每一个剧本只能在一个线程上运转.采纳”事宜轮回”机制.
<p>
渣滓接纳机制:运用渣滓收集器.周期性接纳那些递次中,不被其他援用所实行的变量的内存资本,多是局部变量,用完就废.
罕见的二种体式格局: 标记消灭与援用计数,标记消灭,当变量进入实行环境,如声明一个变量,渣滓接纳机制将其标记进入”进入环境”,当这个变量脱离这个环境时,函数实行完毕将其标记为”脱离环境”,消灭.援用计数跟踪每一个值被运用的次数,该值取得赋值+1,该变量的值变成别的一个-1.
OOP:面向对象编程,对象是一个容器,封装了属性(Property)和要领(method).
JAVA和C++都有类的观点,而类是对象的模板,对象是类的实例,但JS不是基于”类”,基于”组织函数(constructor)”和”原型链(prototype).
组织函数:
平常的函数,函数名首字母大写.天生对象就要运用new.new的作用就是实行组织函数,返回一个实例对象.
<script>
"use strict";
var Cup = function(){ this.money= 77;};
//
let app = function() {this.money=100;};
let Sun = new app(); Sun.money;//100 new 建立一个对象 用new this指向空对象,不必new this指向全局.
//运用现有对象建立对象Object.create()
var linyi = {
naem: 'linyi',
age: '1000',
do:function() {
console.log("Hi"+this.name+".");
}
};
let linyi2 = Object.create(linyi);
linyi2.name ;
</script>
对象继续:
A对象继续B对象,具有B对象一切的属性和要领.继续经由历程"原型对象prototype".
编程范例:
行动与款式星散.定名法: 大骆驼式定名法:首字母大写.小骆驼定名法:首字母小写.
文件资本定名: 文件名不得含有空格,悉数小写,多个单单词用- 运用相对途径.如src=”//img/s.jpg”
变量,函数运用小骆驼,组织函数运用大骆驼.常量悉数大写加下划线_.只管不运用eval()函数.
只管不运用var,运用const.优先运用箭头函数,只运用单引号包裹字符串,制止运用双引号,假如字符串中包含单引号字 符,应运用模板字符串.
模块加载:
AMD提早加载模块,不论是不是挪用,先剖析一切模块.CMD提早加载,在真正须要时,才剖析该模块
AMD(Require.js) CMD(Sea.js) UMD(Commonjs+AMD) Common.js(Node.js)
设想形式:
设想形式有20多种,控制经常使用四种: 单例形式,工场形式,装潢器形式,观察者形式.
this指向:
this是一个关键字,它用在差别的场所,但它老是返回一个对象.属性地点的当前对象是可变的,this的指向是可变的.
JavaScript的一切都是对象,运转环境也是对象,函数在某一个对象中运转时,this就是函数运转时地点的对象.但函数能够在差别实行环境运转,所以须要this执代当前的运转环境.
三运用:
(1)全局环境: this执向顶层对象window.
(2)组织函数: this执向实例对象.
(3)对象的要领: 当对象的要领内里包含this,this的指向就是要领运转时地点的对象.该要领赋值给另一个对象时,就会转变this的指向.
三防备:
(1)防备多层this.
(2)防备数组处置惩罚要领中的this.
(3)防备回调函数中的this.
三绑定:
(1)call();绑定this到某对象.
(2)apply();接收一个数组,转变this指向.
(3)bind();绑定个某对象,返回一个新函数,
关键字: call,apply,bind this.
三个要领call,bind,apply用于将this绑定到函数,即转变this指向.辨别在于挪用的体式格局.call()马上实行函数,但须要把参数按递次传入 .apply()会马上实行函数,但须要把一切参数组合为一个数组传入.这两个差不多,但call函数会把数字作为一个参数.
.bind()传入参数的体式格局与.call()雷同,然则返回一个新的函数,以及对应的环境与和参数.
.toString :返回函数的字符串示意
实行高低文:
当前代码的实行环境.注重当代码最早实行时,构成实行高低文栈,全局实行高低文永远在栈底,当前实行实行的函数在栈定.每一个实行高低文都有三个主要属性:变量对象,作用域链,this注重js引擎最早实行js代码时,最早进入的是一个全局的实行高低文,在全局的实行高低文中每挪用一个函数,就会建立一个实行高低文的内部对象(作用域),一个实行高低文定义一个函数实行环境,每次实行每次的实行高低文举世无双,屡次挪用建立多个.实行高低文逐次实行,直到回到全局高低文.每一个函数都有差别的高低文和作用域,作用域基于函数,高低文基于对象.
作用域链:
一个函数,我们在内里再建立一段函数,父函数挪用子函数的变量叫做闭包,但构成了单个作用域链,从子函数最早不停往上查找,就是作用域链.在js中,函数也是对象,对象中有些属性我们能够接见,有些不能够.不能够接见的属性打击js引擎存取,如scope(作用域),存储了实行高低文的鸠合.个中实行高低文的对象鸠合,呈链式链接,叫做作用域链.
严厉形式:
页面第一行声明 "use strict"; 作用:制止一些不合理与不严禁的语法,增添报错的场所, 进步编译器的效力.
不可对只读属性赋值(字符串长度等),函数不能有重名的参数.制止隐式全局变量声明,制止this实行全局,制止删除变量.制止运用with语句,创设eval作用域,非函数代码块不可声明函数.
AJAX 跨域.内置对象: Object对象(首字母大写),Array,Boolean,Number,String,Math,Date,RegExp,JSON.
异步操纵: 定时器和Promise对象.
异步操纵:
JavaScript只在一个线程上运转,但js引擎是多个线程.内部运用"事宜轮回(Event Loop)"机制.一切的使命分为同步使命和异步使命.同步使命在主线程列队,一个接着一个.异步使命:被引擎放在一边,进入使命行列的使命,不必实行完就能够实行下一步.
使命行列: 主线程以外,用来处置惩罚当前递次处置惩罚的异步使命.异步使命可变同步,且有回调函数.
定时器:定时实行代码.主要有两个函数setTimeout()和setInterval().向使命行列增加定时使命.
Object:顶层对象是Window对象,但一切的对象都继续Object对象,即一切的对象都是Object的实例.Object的原生要领,分Object自身要领(静态要领)和实例要领.<script>
//自身的要领,直接定义在自身.
Object.print= function () {console.log(0)};
//实例要领是定义在Object的原型对象Object.prototype上的要领,它能够被Object实例直接运用.
Object.prototype.print = function (){console.log(this);}; var obj = new Object;obj.print;();
//作为东西函数
var obj = Object();//转换为对象
//作为组织函数,天生新对象.
var Obja = new Object();
//此为有一些静态要领和实例要领.</script>
Array:
原生对象(内置对象之一),也是一个组织函数,也可用他它天生新的数组.一个静态要领和二十个实例要领.<script>
var apple = new Array(2); arr.length;//2
apple.isArray(arr);//true;推断是不是是数组.
var apple = [1,2,3];
apple.valueOf();//[1,2,3]返回该值.
apple.toString();//"1,2,3"返回数组的字符串情势.
apple.push(1);//再数组末端增加一个或多个元素.
apple.pop();//删除末了一个元素.
apple.shift();//删除数组末了一个元素.
apple.join();//以制订参数作为分开符,分开数组.
['a'].concat(['world']);//兼并数组.
apple.reverse();//倒置数组递次.
apple.slice(2,3);//提取数组返回,新数组.
apple.splice();//删除原数组的一部分红员.
apple.sort();//数组从新排序.
apple.map();//将数构成员顺次传入参数函数.
apple.forEach();//将数构成员顺次传入参数,但不返回值.
apple.filter();//用于过滤数构成员.
apple.some();//一真则真.
apple.every();//全真才真.
apple.reduce();//从左到右相加.
apple.reduceRight();//从右到左想加.
apple.indexOf();//指定数组第一次涌现的位置.
apple.lastIndexOf();//制订数组末了一次涌现的位置.
</script>
JSON: 一种数据交换文本花样,每一个JSON对象是一个值.JSON的对值的范例和花样有严厉的划定.null,空对象,空数值都是正当的JSON值
javascript内置对象JSON对象,用来处置惩罚JSON花样数据,有两个静态要领.JSON.stringify()和JSON.parse()
<script>
//JSON.parse()将JSON字符串转换成对应的值.
JSON.parse(‘{}’)//{}
//JSON.stringify()将一个值转为JSON字符串.
JSON.stringify(‘abc’)//””abc””
</script>
RegExp对象:
一种表达文本形式的要领.新建有二种.运用字面量用/包含.运用RegExp组织函数.
Date对象:
javascript原生的时候库,它以1970.1.1.00:00:00作为零点,高低可示意一亿天.
用法: 作为平常函数和组织函数 三种静态要领: Date.now() Date.parse() Date.UTC()
实例要领: ValueOf和toString,以外另有三类: to类,get类,set类.
<script>
//平常函数
Date()//直接运用,返回当前时候,加参数也没用.
//组织函数
let Today = new Date();
Today; //这里返回的实例即是Today.toString()
Today.valueOf() //返回间隔零点的毫秒数===getTime
Date.now()//返回间隔零点的毫秒数
Date.parse()//剖析日期字符串.一样返回间隔零点的毫秒数.剖析失利,返回NaN.
Date.UTC() //接收年,月,日等变量作为参数,返回该时候间隔零点的时候.
</script>
Math对象:
内置对象,该对象不是组织函数,不能天生实例,供应种种数学功用.内置一些静态数学和要领.<script>
//返回常数e ,2的自然对数,10的自然数,以2为底的e的对数,以10为底的e的对数,常数PI.0.5和2的平方根.
Math.E; Math.LN2; Math.LN10; Math.LOG2E;Math.LOG10E;Math.PI;Math.SQRT1_2;Math.SQRT2;
//上面的数学都是只读的,不可修正.
//静态要领
Math.abs(); Math.ceil(); Math.floor();Math.max();Math.min();Math.pow();Math.sqrt();
Math.log();Math.exp();Math.round();Math.random();
//一些三角函数要领
Math.sin();Math.cos();Math.tan();Math.asin();Math.acos();Math.atan();</script>
包装对象:三种原始范例的值(数值,字符串,布尔值)封装的对象.内置了一些属性和要领.包装对象都从Object对象继续两个要领valueOf和toString.valueOf()要领返回包装对象实例对应的原始范例的值.toString()要领返回对应的字符串情势.
Bollean对象:
JavaScript对象作为JavaScript的三个包装对象(Number,String)之一.
用法: 作为组织函数和一样平常运用.<script>
//作为组织函数
let a = new Boolean(true);
typeof a;
a.valueOf() //true
//一样平常零丁运用
Boolean(null)//false;
Boolean(1)//true;
!!0//false
!![]//ture;</script>
Number对象:
包装对象之一,用法二种:组织函数和东西函数.封装了一些静态属性和要领.也可自定义要领.<script>
//用于组织函数
let a = new Number(1); //a为天生值为数值的对象.
//东西函数
Number(true) //1 将true转为1 将任何数据范例的值转为数值.
Number.NaN//NaN
//实例要领
(100).toString();//"10"数字转字符串
(100).toFixed();//转换为对应的字符串
(222).toExponential();//转换为科学计算法
(333).toPrecision(1);//转换为指定位数的有用数字.
</script>
String对象
包装对象之一,用来天生字符串对象(很像数组的对象,但不是数组).一个静态要领,一个实例属性,十六个实例要领.<script>
//作为东西要领运用,将恣意范例的值转为字符串
String(true);//”trye”
String.fromCharCode(104,101,108,108,111);//将参数值代表的Unicode码点转为字符串.
‘abcdegf’.length; //7
let rain = new String(“abcdefg”);
rain.charAt(1);//”b”返回指定位置的字符==’abcdefg'[1]
rain.charCodeAt(1)//98返回指定位置字符串的Uniocde码点.无参返回首字符的码点.参数为负数或大于时,返回NaN.
let b = new String(‘0101’);
rain.concat(b)//”abcdefg0101″衔接两个字符串,返回一个新字符串.
rain.slice(0,1)//”ab”返回参数截取的字符,参数为负时,倒计数.一参大二参时,返回空字符串””.
rain.substring(0,1)//”ab”类似与slice,划定规矩不好记,只管不要用,用slice.
rain.substr()//”ab”大抵与slice雷同,二参为截取的长度,为负时转为0.
rain.indexOf(‘c’)//3字符涌现的位置.
rain.lastIndexOf(‘c’)//4从尾部最早计数位置.
rain.trim()//去除字符串的两头的空格.
rain.toLowerCase();//将字符串悉数转为小写.
rain.toUpperCase();//全局字符串转为大写.
rain.math(‘abc’);//abc返回婚配到的字符,无则null.
rain.search(‘ab’);//1返回婚配的第一个符合字符的位置.
rain.serach(‘a’,’1′);//’1bcdefg’替代字符
rain.spilt(‘|’);//[“a”,”b”,”c”,”d”,”e”,”f””g]返回支解的字符串
rain.localeComparse(‘banana’)//比较二个字符,一大二,返回值大于0,相称返回0,小于返回小于0 </script>要领:
parseInt()将字符串转为整数 parseFloat()将字符串转为浮点数 isNaN()推断一个值是不是为NaN.
isFinite()返回布尔值,示意某个值是不是为平常的数值.false有+/-Infinity NaN undefined
split() 把字符串支解为字符串数组.
Math.ceil();向上取整. Math.round();四舍五入.Math.floor();向下取整.
valueOf() 返回某个字符串对象的原始值。
concat() 衔接两个或更多的数组,并返回效果。
pop() 删除并返回数组的末了一个元素
push() 向数组的末端增加一个或更多元素,并返回新的长度。
reverse() 倒置数组中元素的递次。
shift() 删除并返回数组的第一个元素
sort() 对数组的元素举行排序
<script>
//正则表达式
//磨练基本日期花样
var reg1 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
var reg2 = /^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$/;
//效验暗码强度,必需是包含大小写字母和数字的组合,不能运用特别字符,长度在8-10之间。
var reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/;
//校验中文,字符串仅能是中文
var reg = /^[\\u4e00-\\u9fa5]{0,}$/;
//由数字、26个英文字母或下划线构成的字符串
var reg = /^\\w+$/;
//校验E-Mail 地点
var reg = /[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?/;
//. 校验身份证号码 15或18
var reg = /^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$/;
var reg = /^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/;
//效验日期
var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;
//. 校验金额,准确到2位小数
var reg = /^[0-9]+(.[0-9]{2})?$/;
//推断IE的版本
var reg = /^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\\/[5-9]\\.0).*$/;
//校验ipv6地点
var reg = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;
//校验IP-v4地点
var reg = /\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b/;
//搜检URL的前缀,运用开辟中许多时刻须要辨别要求是HTTPS照样HTTP,经由历程下面的表达式能够掏出一个url的前缀然后再逻辑推断。
if (!s.match(/^[a-zA-Z]+:\/\//)) {
s = 'http://' + s; }
//提取url链接
var reg = /^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/;
//文件途径与扩展名效验,考证windows下文件途径和扩展名(下面的例子中为.txt文件)
var reg = /^([a-zA-Z]\\:|\\\\)\\\\([^\\]+\\)*[^\\/:*?"<>|]+\\.txt(l)?$/;
//提取Color Hex Codes,偶然须要抽取网页中的颜色代码,能够运用下面的表达式。
var reg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
//提取网页图片,倘使你想提取网页中一切图片信息,能够运用下面的表达式。
var reg = /\\< *[img][^\\>]*[src] *= *[\\"\']{0,1}([^\\"\'\ >]*)/;
//提取页面超链接,提取html中的超链接
var reg = /(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>/;
//查找CSS属性
var reg = /^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}/;
//抽取解释,假如你须要移除HMTL中的解释,能够运用以下的表达式。
var reg = /<!--(.*?)-->/;
//转换千分位分开符
return total.toString().replace(/\B(?=(\d{3})+$)/g, ',');
</script>
跨域 :一个域下的文档或剧本试图去要求另一个域下的资本.(广义).浏览器同源战略限定的一类要求场景(狭义).
如: 资本跳转: A链接,重定向,表单提交.资本嵌入:<link><script></script><img><frame>等dom标签
款式中:background:url().@font-face()等文件外链.剧本要求:js提议的ajax要求,dom和js对象的跨域操纵等.
跨域限定:
服务器的一个行动,当开启对某些域名的接见限定后,只要同域或指定域名下的页面能够挪用.平常情况下只在用浏览器端存在,关于服务器/ios/andriod等客户端是不存在的.
同源战略(SOP)
它是一种商定,即"协定/域名/端口"必需雷同.防备XXS,CSRF等进击.限定了Cookie,LocalStorage和IndexDB没法读取.DOM和JS对象没法取得.AJax要求不能发送.
get要求与post要求:
实质都是tcp协定,http的划定和浏览器与服务器的限定,在运用的历程有所差别,get发生一个tcp数据包,post发生两个数据包,GET求,浏览器会把http的header和data一并发送出去.服务器相应200(返回数据),关于post,浏览器先发header,服务器相应100 浏览器再送data,服务器相应200(返回数据).
前后端通信中ajax只支撑同源战略,websocket不受同源战略影响,CRO新标准,都支撑.
9种跨域解决方案
(1)jsonp跨域(2)document.domain + iframe跨域 (3)location.hash + iframe (4)window.name + iframe跨域
(5)postMessage跨域(6)跨域资本分享(CROS)(7)nginx代办跨域 (8)node中间件代办跨域(9)WebSocket协定跨域
json: javascript对象示意法,轻量级的文本数据交换花样.具有层级构造,可运用AJAX举行传输.json语法是js语法的子集,
JSONP:是json的一种”运用形式”,能够让网页从别的域名猎取材料.只支撑GET要求,CORS支撑一切范例的HTTP要求.JSONP上风在于支撑先生浏览器,以及能够向不支撑CORS的网站要求数据.道理是script src 实质就是一个回调函数,然后在长途服务器上挪用这个函数而且将json数据情势作为参数通报,完成回调.对象花样的字符串,轻量的数据传输花样. 注重:键值须要””包起来.
两个要领:JSON.parse 和 JSON.stringify JSON.parse,将背景传来的字符串转化为对象。其字符串的内容就是对象才须要这个转化.
JSON.stringify,将背景传来的对象转化为字符串。
<script>
//原生完成
var script = document.createElement('script');
script.type = 'text/javascript';
//传参并指定回调实行函数为onBack
script.src = "http://www.domain2.com:8080/login?user=admin&callback=onBack"
document.head.appendChild(script);
//回调函数
function onBack(res) {
alert({JSON.stringify(res)});
}
//服务器返回以下(返回时即实行全局函数)
onBack({"status":true,"user":"admin"})
//jqery ajax
$.ajax({
url: 'http://www.domain2.com:8080/login',
type: 'get',
dataType: 'jsonp', //要求体式格局为jsonp
jsonpCallback: "onBack" //自定义回调函数
data: {}
});
//要领document.domain +iframe 仅限于主域雷同,子域差别的跨域运用场景
//两个页面都经由历程js强迫设置document.domain为基本主域,完成同域.
//父
<iframe id="iframe" src="http://child.domian.com/b.html"><iframe>
document.domain = "domain.com";
var user = 'admin';
//子
document.domain = 'domain.com';
alert('get js data from paretn --->' + window.parent.user)
//增加<script>标签的要领
function addScriptTag(src) {
var script = document.createElement('script');
script.setAttribute("type", "text/javascript");
script.src = src;
document.body.appendChild(script);
}
// 向背景提议要求(链接是胡乱写的)
addScriptTag('http://www.qq.com/getJsonp?callback=jsonCallback')
//jQuery ajax,逐步退出历史舞台,基于原生的XHR开辟.Ajax是用JS向服务器发送要求,并猎取服务器返回的内容,全部页面并没有革新.通经常使用Ajax要求JSON的花样的数据
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: dataType,
success: function () {},
error: function () {}
});
//axios现在主力将军,promise完成版本
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
//Fetch 将来的娇子 还需生长
try {
let response = await fetch(url);
let data = response.json();
console.log(data);
} catch(e) {
console.log("Oops, error", e);
}
//原生跨域要求
var script = document.createElement('script');
script.type = "text/javascript";
//传参数并指定回调实行函数为onBack
script.src = "http://www.baidu.com:8080/login?user=admin&callback=onBack;"
document.head.appendChild(script);
//回实行函数
function onBack(res) {
alert(JSON.stringify(res));
}
$.ajax({
url: 'http://www.baidu.co:8080/login',
type; 'get',
dataType: 'jsonp', //要求体式格局为jsonp
jsonCallback: "onBack",
data: {}
});
//Vue
this.$http.jsonp('http://www.baidu.com:8080/login',{
params: {},
jsonp: 'onBack'
}).then((res) => {
console.log(res);
})
</script>