引言
描述一个杯子:
var bottle = {
name : 'bottle',
price: 49;
isKeepWarm: true
};
一堆杯子
function createBorttle(name, price,isKeepWarm){
return{
name:name,
price: price;
isKeepWarm: isKeepWarm
}
}
var bottle = createBottle('太空杯',49,false);
一堆杯子称为工厂模式,但是有一个 问题,调用生成bottle,那么怎样证明创建的杯子是一个bottle?这就需要摸索创建对象的方式,先讲一下函数
函数
函数作为对象有它自己的属性:name,length,prototype
function createBottle(){
//内部有argument this
}
方法:bind(),call(),apply();
argument //储存了参数列表,是一个对象、类数组、length属性
不要滥用,影响代码的可读性
非常适合动态参数的场景
this 执行环境:前端代码chrom,
全局作用域 window
对象的方法 方法
函数的方法:改变this指向
apply传参是一个数组,call传参一个一个传。
函数的属性:
name: 函数名
length: 形参个数(声明时就确定了)
prototype: 函数的一个原型属性,这个属性是一个指针,指向一个对象,。
函数是一等公民 First Class
数据类型分为: First Class 可以作为函数的参数和返回值,也可以赋给变量
Second Class 可以作为函数的参数,但不能从函数返回,也不能赋给变量
Third Class 不能作为函数的参数
闭包:一个普通的概念
‘闭包是指由权访问另一个函数作用域中的变量的函数