创建对象的工厂模式:
function factoryPerson(name,age,action){
return{
name:name,
age:age,
action:action,
work:work,
}
}
方法的函数定义在外面,可以实现实例对象,对方法的共享
var work = function(){
document.write("<br> 姓名:" + this.name +
"<br>年龄:" + this.age + "<br>职业:" + this.action)
}
构造函数创建对象
function Person(name,age,action,food){
this.name = name;
this.age = age;
this.action = action;
this.food = food;
this.eat = personMethod.eat;
this.study = personMethod.study;
this.jiuzhen = personMethod.jiuzheng;
//this.work = function(){
//document.write("<br> 姓名:" + this.name +
//"<br>年龄:" + this.age + "<br>职业:" + this.action)
// }
存放方法的对象
var personMethod = {
eat:function(){
document.write("<br>" + this.name + "喜欢吃:" + this.food);
},
study:function(){
},
jiuzhen:function(){
}
}
构造函数
所有的对象都有一个constructor属性,该属性的取值就是生成该对象的构造函数的
原型(prototype)
所有的函数都是对象,每个函数对象都有个属性.prototype,该属性的取值也是一个对象,而且该对象也是该函数的实例
我们可以通过设置prototype对象的方法和属性,每个实例可以共享这些属性和方法。
原型链
函数进阶
普通函数
function 函数名(参数){ }
函数表达式
var 变量名 = function(参数){ } //匿名函数
构造函数
new 构造函数() { }//new运算符
函数内this指向不同场景
call 借用其他对象的方法,
【格式】被借用对象.方法call(借用对象,参数列表)
apply 借用其他对象的方法,
【格式】被借用对象.方法.apply(借用对象,[参数列表])
【注】传参时遍历数组,一一赋给调用方法的参数
bind 复制其他对象的方法
【格式】 被复制的对象.方法.blind(借用对象,参数列表)
【注】会生成新的对象
函数的其他成员
Arguments 实参数集合,在不声明形参的情况下可以取到传过来的参数
函数可以作为参数
函数可以作为返回值
正则表达式
作用:1.判断指定格式的字符串是否存在 正则表达.test("字符串");
2.提取指定格式的字符串,并返回数组 字符串.match(正则表达式);
3.替换指定格式的字符串,并返回字符串 字符串.replace(正则表达式,“替换内容");
创建:
var 正则表达变量 = /表达式/gi
var 正则表达对象 = new RegExp("正则表达式”,"gi");
【注】g搜索字符串全部 相当于全局 i表示不区分大小写
编辑正则表达式
元字符
\d 0-9字符
\D 匹配任意非数字的字符
\w 字母,数字,下划线
\W 非字母,数字,下划线的字符
\s 任意空白字符
\S 非空白字符
. 匹配换行符(\n)以为的任意字符
^ 表示匹配行首文本
$ 表示匹配行尾文本
限定字符
* 0次,多次
+ 1次,多次
? 0次,1次
{n} 重复n次
{n,} 重复n次上
{n,m} 重复n到m次
其他
[字符串] 匹配其中任何一个
[^字符串] 取反
| 或者
() 配合 |,可以实现选择匹配(a|b)
[\u4e00-\u9fa5] 匹配汉字
伪数组:本质就一个对象,只不过他的属性模拟了数组的索引
var objArr = {
o:"welcome",
1:"hello",
2:"world"
}
Object静态方法
Object.assgin(对象列表) 合并对象
Object.create(对象模板)依据对象模板创建一个新对象
Object.keys(对象) 获取对象可枚举的属性,并且返回数组
Object.defineProperty(对象,‘属性名’{
value:属性值,
writable:是否可重写,
enumerable:是否可枚举,
configurable:是否可删除
})
实例成员
实例.construtor
实例.hasOwnProperty("属性名”);//判断自己是否有该属性
垃圾回收机制:有垃圾回收器,自动完成垃圾回收
Event Loop 事件循环