阿里云最新活动链接

如果函数作为普通函数调用prototype没有任何作用

当函数以构造函数调用时,它所创建的对象中都会有一个隐含
的属性,指向该构造函数的原型对象。

我们可以通过__proto__来访问该属性。

原型对象就相当于一个公共的区域,所有同一个类的实例
都可以访问到这个原型对象,我们可以将
对象中共有的内容,统一设置到原型对象中。

当我们访问对象的一个属性或方法时,它会先在对象自身中
寻找,如果有则直接使用

以后我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中,这样不用分别
为每一个对象添加,也不会影响到全局作用域,就可以使每个对象具有这些属性和方法了。

使用in检查对象中是否含有某个属性时,如果对象中没有但是原型中有,也会返回true

使用对象的hasOwnProperty()来检查对象自身中是否含有该属性。

mc.hasOwnProperty();

对一个对象的属性或方法时,会现在自身中寻找
自身中有,则直接使用
如果没有则去原型对象中找,如果原型对象中有,则使用
没有则去原型的原型中寻找,直到直到Object对象的原型

Object对象的原型没有原型,如果再Object中依旧没有找到,则
返回undefined.

mc.__proto__.__proto__

如果我们希望输出对象的时候不输出[object object],可以为对象
添加一个toString()方法。

per.toString = function(){
    return "我是一个快乐的小Person";
}

var result = per.toString();


垃圾回收(GC)


forEach()只支持IE8以上的浏览器

arr.forEach() 需要一个函数作为一个参数

-像这种函数,由我们创建但是不是我们调用的, 我们成为回调函数


遍历的元素以实参的形式传递过来

arr.forEach(function(a , b , c){
    console.log(a);//key值
    b 键值
    c键值对 就是正在遍历的数组
})

arr.forEach(function(value,inde,obj){
    
})

slice 从数组中返回选定的元素

arr.join()  将数组转换为字符串,转换后的字符串作为结果返回

arr.join("-")  之间就还是用-连接


arr = [5,4];

arr.sort(function(a,b){
    return 1;
});

console.log(arr);
根据返回值来决定元素的位置

arr.sort(function(a,b){
    //前面的大
    if(a > b){
        return 1;
    }else if(a < b){
        retrun -1;
    }else{
        return 0;
    }
})


对函数调用 call() 和 apply() 时都会调用函数执行。

fun.call(obj); 是一个object.

可以将一个对象指定为第一个参数,

此时这个对象将会成为函数执行时的this,

obj.sayName.apply(obj2);

fun.call(obj,2,3)  可以在实参在对象之后一次传递

fun.apply(obj,[2,3]) 实参封装到数组中,进行传递



this的情况


函数形式调用时,this永远是window

以方法的形式调用时,this是调用方法的对象

以构造函数的形式调用时,this是新创建的那个对象

使用call和apply调用时,this 是指定的那个对象


在调用函数时,浏览器每次都会传递进两个隐含的参数。

1函数的上下文对象this
2封装实参的对象arguments
    arguments 是一个类数组对象

function fun(){
    console.log(arguments);  //传进去一个对象

    console.log(arguents instanceof Array);//false

    console.log(Array.isArray(arguments));

    console.log(arguments.length); //传递实参的长度

    console.log(arguments[0]); //获取到第一个实参

    console.log(arguments.callee); //属性callee
    //这个属性对应一个函数对象,就是当前正在指定的函数的对象、

}

fun() 0

fun("hello") 1
fun{'hello',true}  2 表示传递了两个实参


我们不定义形参,使用arguments来获取实参。



Date对象  在js中使用Date对象来表示一个时间。

创建一个Date对象。  var d = new Date();

console.log(d);

创建一个指定的时间对象

需要在构造函数中传递一个表示时间的字符串作为参数

var d2 = new Date("12/03/2016 11:10:30");

console.log(d2);


字符串中  indexof()

如果字符串中含有该内容,则会返回其第一次出现的索引。
可以指定第二个参数,指定开始查找的位置

lastIndexOf();  

str = "hello hatguigu";

result = str.indexOf("h",1);

console.log(result);


slice()  可以从字符串中截取指定的内容。 不会影响原字符串。

substring() 截取字符串 第二个参数不能传递负值

substr()  1.截取开始位置的索引  2.截取的长度


split() 可以将一个字符串拆分为数组

result = str.split(",");

console.log(Array.isArray(result));


创建正则表达式的对象

var reg = new RegExp("正则表达式",'匹配模式');

test()使用这个方法用来检查一个字符串是否符合正则表达式规则

符合 返回true  否则返回false.

var result = reg.test(str);

console.log(reg.test("a"));


第二个字段是否忽略大小写

var reg = new RegExp("a",'i');  //忽略大小写
                            g //全局匹配模式。

第二种方法


reg = /a/i;


第一种简单  第二种灵活


//创建一个正则表达式,检查一个字符串中是否有a或b

/a|b/

使用 | 表示或者的意思


/创建一个正则表达式检查一个字符串中是否有字母/

reg = /[ab]/

[ab]  == a|b


reg = /[a-z]/  任意小写字母


/[A-z]/  或者 /[a-z]/i
 任意的大小写字母



 检查一个字符串中是否 abc  adc  aec

 /a[bde]c/



 /[^ab]/  除了ab 都为true

[0-9] 任意数字  /[0-9]/ 任意的数字

[^0-9] 除了数字


支持正则表达式的String对象的方法


search  检索与正则表达式相匹配的值。
match  找到一个或多个正则表达式的匹配。
replace  替换与正则表达式匹配的子串。
split  把字符串分隔为字符串数组。



根据任意字母将字符串拆分

可以传递一个正则表达式作为参数

var result = str.split(/[A-z]/);


str.search(); 如果搜索到指定内容,
则会返回第一次出现的索引,如果没有搜索到,
返回-1

它可以接受一个正则表达式作参数,然后根据正则表达式去检索字符串


search(/a[bef]c/);


match 从一个字符串中符合条件的内容提取出来。

result= str.match(/[A-z]/g)

result= str.match(/[A-z]/gi) 全局忽略大小写


console.log(Array.isArray(result))


例子:  match()提取出想要的邮箱


replace  默认的只会替换第一个 可以接受一个正则表达式作为参数

search 不能全局匹配,只能查到第一个,
即使设置全局匹配,也只会查第一个



量词  通过量词可以设置一个内容出现的次数

    /a{3}/  console.log(reg.test("aaabc"));


量词只对前边的一个内容起作用


/(ab){3}/  出现 3次  ab

/ab{1,3}c/  b出现1次到3次

{m,n} m到n次


{m,} m次以上

+ 至少有一个   /ab+c/  

* 零个或者多个

?包含零个或者一个n的字符串

/^a/    检查字符串中是否以a开头

/a$/  检查字符串中是否以a结尾

/^a$/  只能有一个a才是true.

/^a|a$/ 以a开头或者以a结尾


创建一个正则表达式,是否是一个手机号

/^1[3-9][0-9]{9}$/


console.log(phoneReg.test(phoneStr))

检查一个字符串中是否含有.

/./ 表示的是任意字符

在正则表达式中使用转义字符

\. 表示 .
\\ 表示 \


reg = new RegExp("\.");  使用 \ 要用\\来代替。


new RegExp("\\.");

\w  任意字母数字下划线
\W     除了字母数字下划线
\D  除了[0-9]
\d  任意的数字
\s  空格
\S  除了空格
\b  单词边界
\B  除了单词边界


/*创建一个正则表达式检查一个字符串中是否含有单词child*/

reg = /child/;

console.log(reg.test("hello child"));

独立的单词
/\bchild\b/   得到独立的单词。


替换多个空格

str.replace(/s/g , "");


去除开头的空格

str.replace(/^\s*/g,"");

(/^\s*|\s*$/g "")


匹配 电子邮件


/^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/



猜你喜欢

转载自www.cnblogs.com/devilgod/p/9686170.html