正文
else{
return new Person(name);
}
}
3 惰性载入函数
假设有一个方法X,在A类浏览器里叫A,在b类浏览器里叫B,有些浏览器并没有这个方法,你想实现一个跨浏览器的方法。
惰性载入函数的思想是:在函数内部改变函数自身的执行逻辑
function X(){
if(A){
return new A();
}
else{
if(B){
return new B();
}
else{
throw new Error('no A or B');
}
}
}
换一种写法
function X(){
if(A){
X = function(){
return new A();
};
}
else{
if(B){
X = function(){
return new B();
};
}
else{
throw new Error('no A or B');
}
}
return new X();
}
4 防篡改对象
4.1 不可扩展对象 Object.preventExtensions
// 下面代码在谷歌浏览器中执行
> var person = {name: 'wdd'};
undefined
> Object.preventExtensions(person);
Object {name: "wdd"}
> person.age = 10
10
> person
Object {name: "wdd"}
> Object.isExtensible(person)
false
4.2 密封对象Object.seal
密封对象不可扩展,并且不能删除对象的属性或者方法。但是属性值可以修改。
> var one = {name: 'hihi'}