(1) XHR:xml httprequestXHR注入:XHR 注入技术是通过XMLHttpRest来获取javascript的.但与eval不同的是,该机制是通过创建一个script的DOM元素,然后把XMLHttpRequest的响应注入script中来执行javascript的.在某些情况下使用eval可能比这样机制慢.XHR injection 通过XMLHttpRequest获取的内容必须部署在和主页相同的域中. (2) RegExp:正则表达式 <script> var reg=…
JS的this总结(上)-call()和apply() ​ 相信很多人在学习JavaScript的过程中,都会了解到this,而大部分人都会特意去网络上搜一下相关资料,大部分的文章都有这么一句话: this总是指向调用该函数的对象. ​ 确实,这句话在我学习JS的过程中,基本没出现过什么错误. ​ 但是注意的是JS中,平时用得相对比较少的2个方法,可以改变this的指向: call(thisArg[, arg1[, arg2[, ...]]]) 首先call(),引用segmentfault中的…
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道,如果我要定义一个通用的类型我可以使用类(class).比如在java中我们可以这样定义一个类: public class Puppy{ int puppyAge; public Puppy(age){ puppyAge = age; } public void say() { System.out.…
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道,如果我要定义一个通用的类型我可以使用类(class).比如在java中我们可以这样定义一个类: public class Puppy{ int puppyAge; public Puppy(age){ puppyAge = age; } public void say() { System.out.…
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这三个方法进行详细的讲解,并列出几个经典应用场景. call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一个参数列表,thisArgs 指定了函数在运行期的调用者,也就是函数中的 this 对象,而参数列表会被传入调用函数中.thisArgs 的取值有以下4种情…
//对象直接量,创建对象最简单的方式是在js里使用对象直接量 var book = { "main title": "js", //属性里有空格,要用引号 "s-t": "the microsoft", //有连字符也要用引号 "for": "all start", //keyword也要用引号 x: 2, author: { fistname: "jiangfan"…
在前端网看了这么一篇文章,觉得讲得还不错,不深入但易懂,所以我这里把这个经典的问题也记下来. 1:声明式函数与定义函数表达式 console.log(f1);//f1() console.log(f2);//undefine function f1(){ console.log('f1'); console.log(this);//window } var f2 = function(){ console.log('f2'); } f1函数为声明式,f2为表达式:两者区别就在于函数的声明是在预处…
JS数组追加数组没有现成的函数,这么多年我已经习惯了a.push.apply(a, b);这样的自以为非常酷的,不须要写for循环的写法,一直也没遇到什么问题,直到今天我要append的b是个非常大的数组时才遇到了坑. 1 a = new Array();      2 b = new Array(125624);                      3 a.push.apply(a, b); 以上的代码在mac的chrome下抛出了例如以下的异常 1 Uncaught RangeErro…
一,标志 g (global,全局匹配标志) 执行正则表达式匹配或替换时,一般只要搜索到一个符合的文本就停止匹配或替换.使用该标志将搜索所有符合的文本直到文本末尾. i (ignoreCase,忽略大小写标志) 执行正则表达式匹配或替换时,使用该标志可以忽略大小写. m (multiline,多行匹配标志) 执行正则表达式匹配或替换时,使用该标志可以让元字符"^"和"$"额外匹配每行的开始位置和结束位置. 二,正则表达式对象 RegExp对象,就是我们常说的正则表达…
所有的函数都具有call(),apply()和bind()方法.它们可以在执行方法的时候用一个值指向this,并改变面向对象的作用域. apply方法: 以下的两种表达式是等价的: func(arg1,arg2,arg3) func.apply(null,[arg1,arg2,arg3]) apply()往往用在一个函数需要以数组的是形式接受多个参数时使用. 使用Math.max()来获得一个数组中最大的元素: Math.max.apply(null,[17,33,21]); call方法: 表…