如果函数作为普通函数调用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
今日推荐
周排行