对于构造函数,它是Function对象的一个实例,可以定义自己的静态成员
先实例化出对象,后执行function中内部代码
静态成员:
var abc = function () {}; //既是一个实例,也是一个构造函数
abc.a = ‘1‘; //静态属性
abc.b = function() {}; //静态方法
原型中的公有成员: 原型一旦修改,会立刻改变基于它生成的对象和实例
abc.prototype.aaa = function () {};
私有成员,特权成员控制访问 会被带到该构造函数生成的每个实例中,实例越多,占用内存越大
私有成员,就是在另一个函数中定义的变量和函数
function abc () {
this.a = ‘3‘;
//私有属性
var b = ‘4‘;
//私有方法
function aaa() {
}
}
特权成员(也是公有成员),指在构造函数作用域中,使用this关键字定义的方法。
function abc() {
var a = ‘3‘;
var b = function () {};
//特权方法
this.ab = function () {
alert(a);
};
}
两种定义函数的方式
javascript执行之前,浏览器会对window对象下的所有顶级变量进行初始化,通过赋值语句实现的函数,初始化时不会被立即声明。
function abc() {} //可以在函数执行之前,立即被声明,可以在任意位置调用。
var abc = function () {} //脚本执行到该行之前,abc函数并不存在;该函数的调用只能在该赋值语句之后。
this,是一个依赖于使用它的执行环境被解析的关键字。
apply 和 call 仅使用方式上有差别
apply在调整this执行环境,并包装成一个匿名函数特别有用。
function bindFunction(obj, func) {
return function () {
func.apply(obj, arguments);
};
}
异常
try {
} catch (e) {
console.log(e.name);
console.log(e.message);
}