-
exec:正则匹配字符串;match:字符串匹配正则; compile:改变正则的属性。 字符串和正则的配合使用: string.search(reg);寻找符合reg的位置 string.replace;替换 match:匹配 split:将reg作为分隔符查看全部
-
修改类.prototype.属性时,会影响所有已经创建的实例,相当于修改静态变量; 但是直接修改类.prototype时,并不会影响到已创建的实例,但是会对之后新创建的实例有影响。查看全部
-
继承 封装 多态 抽象 prototype是函数对象的一个属性,会成为new对象的原型 继承: 为父类的prototype实现设置若干方法、属性 在子类的构造器中使用 父类.call(this,....); 子类.prototype=Object.create(父类.protype);//创建空对象,其原型为父类,提供覆写能力 子类.prototye.constructor=子类构造器; 为子类的prototype设置需要覆写的方法查看全部
-
变量对象VO按照如下顺序填充: 激活对象AO 变量初始化: 1.函数参数(若未传入,初始化该参数为undefined) 2.函数声明(若发生命名冲突,会覆盖)——函数声明提升的原因 3.变量声明(初始化变量值undefined,若发生命名冲突,会忽略) 在全局作用域下,函数声明和变量声明会被前置到全局执行上下文(执行环境)中。 在浏览器环境下,当this表示全局对象时,this就指window对象 匿名函数,加上括号就变成了函数表达式,再加个括号,就变成了立即执行函数... 同一个函数,被调用多次的话,每次调用函数时都会有独立的执行上下文,每个执行上下文环境都会记录各自的变量参数等信息。查看全部
-
1.JS没有块级作用域 2.全局作用域 3.函数作用域 4.eval 5.作用域链, 闭包的特性 ! 函数表达式, 而不是 函数声明查看全部
-
闭包: 函数的内部函数能访问到外围函数变量 内部函数访问外围变量为及时调用,不会储存,但外围函数的变量会由于闭包的存在而在执行后无法释放 闭包可用于构造私有变量,即封装 闭包会导致空间浪费,内存泄露,以及性能浪费,使用需谨慎查看全部
-
1.函数.length 参数个数 函数.name 函数名 2.函数体内arguments 参数对象 3.当没有传参时,arguments不可以访问 4.严格模式下,arguments是参数的副本 5.call apply的第一个参数会转换为对象,绑定为函数的this 6.如果是null或undefined,会变为全局对象,window 7.严格模式下null,undefined不会自动转换 8.bind ,IE9+,绑定作用域 9.this与作用域的关系 10.bind构造含默认值的函数 类比C#查看全部
-
1.全局的this===window 2.函数内 function f1(){return this;} f1()===window//true function f2(){'use strict' return this;} f2===undefined//true 3.对象内与JAVA相同 var o={prop:37} function f(){return this.prop;} o.f=f; 4.对象原型链 原型this可以获取本身 5.get/set的this与上述一致 6.构造器中的this prototype 当没有return或者return基本类型时,会返回this。如果是对象,则返回该对象。 7.apply数组 call顺序 只能拿到函数对象时 8.bind返回函数,参数对象 绑定,绑定参数和对象后返还绑定对象查看全部
-
1.函数声明 function fun(a,b){return ...;} 2.函数表达式, 含匿名函数 var f=function(a,b){} (function(){})(); return function(){}; var f=function f(a,b){}; 3.声明会被前置,所以函数声明会被前置,函数表达式前置变量声明 4.函数构造器 var func=new Function('a','b','console.log(a+b);'); 5.函数构造器所创建的变量是局部的,只能使用全局变量 对比函数声明、函数表达式、函数构造器 前置:函数的声明和变量的声明前置使得可以在声明之前调用 允许匿名:函数声明是不能匿名 立即调用:由于函数声明会被前置,因此不能立即调用 通过函数表达式 赋值的对象访问较为妥当,而命名函数表达式不常用查看全部
-
1.函数也是对象 2.函数是一块javascript代码,定义一次,多次执行调用 3.函数名 参数列表 函数体 默认return undefined this arguments 作用域 调用方法 创建方法 直接调用 fun(); 对象方法o.method(); 构造器new Fun(); 特殊 apply/call/bind查看全部
-
function Foo(){} var obj1 = new Foo(); -------------------------------------- 【Foo.prototype】是函数(Foo)上面的预设的对象属性 实例化后的obj1的 【原型】 通常是 Foo.prototype属性查看全部
-
1.arr.map =》 render 不修改原数组 function(x) 2.filter 不修改原数组 筛选 function(x,index) 3.every function(x) return false true,是否每一个元素是否满足条件 4.some function(x) return false true,是否存在一个元素是否满足条件 5.Array.isArray([]) [].constructor===Array ({}).toString.apply([])==='[Object Array]' 5.arr.reduce function(x,y) 不改变原数组 两两操作 默认从左 reduceRight 6.indexOf lastIndexOf //找不到返回-1 判断一个对象是数组 Array.isArray(obj); []instanceof Array toString.apply([]) .constructor === Array查看全部
-
arr.join(con); //将arr的所有元素连接成为一个字符串,元素之间用con隔开,不设置默认为逗号 arr.reverse(); //数组逆置 arr.sort(); //数组排序,转换为字符串后按字符顺序排序,可传入函数型参数来进行数字排序 arr.forEach(function(index){ //遍历数组,并在每次遍历时调用function,index为数组索引 }); arr.concat(val_1,val_2,…); //数组合并,将一个或多个参数合并至arr数组中,会将数组型参数拆分,但只会拆分一个维度,此函数不会对数组原型作出修改,需用变量接受合并结果 arr.slice(start,num); //数组截取,start为开始截取元素索引,num为截取个数;num不设置默认为截取至 数组尾部;参数设置为-n则为截取至倒数第n+1个元素 注:此函数为[ arr[start] , arr[num] ),且此函数不会对数组原型作出修改 arr.splice(start,num,val_1,val_2,…); //同arr.slice,区别在于此函数对数组原型会做修改,val_1及 之后的参数会被插入至删除位置查看全部
-
二维数组:数组的元素是数组 稀疏数组:并不含有从0开始的连续索引,一般length属性值比实际元素个数大 var arr1=[undefined];//第一个元素为undefined var arr2=new Array(1);//定义一个长度为1的数组 0 in arr1;//true 0 in arr2;//false arr1.length=100; arr1[99]=123; 99 in arr1;//true 98 in arr1;//false var arr=[,,]; 0 in arr;//false查看全部
-
优先级 ValueOf > ToString > ValueOf( ) push pop //尾部添加,删除 unshift shift //头部添加 删除 delete arr[2] //删除元素,位置保留 arr[2] = undefine ; //删除元素 arr.hasOwnProperty(i) //过滤原型链上的属性查看全部
举报
0/150
提交
取消