闲的蛋疼琢磨出来的JavaScript省力特殊写法
如果
想要同时具有对象字面量的省力,又同时具有函数的功能
该怎么做?
毫无疑问!吧两个合并起来!
这是一个工厂函数
function FuncFac(obj){
if(obj.proto==null){
return obj;
}else {
var fuc=obj.proto;
for(var i in obj){
fuc[i]=obj[i];
}
delete fuc.proto;
return fuc;
}
};
它遵循这样的格式
var A=FuncFac({
proto:function(){
alert("这是一个独立的函数");
},
a:"a",
b:"b"
});
这样做有什么好处?
//工厂函数
function FuncFac(obj){
if(obj.proto==null){
return obj;
}else {
var fuc=obj.proto;
for(var i in obj){
fuc[i]=obj[i];
}
delete fuc.proto;
return fuc;
}
};
//示例
var A=FuncFac({
proto:function(){
alert("这是一个独立的函数");
},
a:1+1,
b:"b"
});
alert(A.b);//输出:b
A();//输出:这是一个独立的函数
这个变量 A
同时是个可直接执行的函数,又是个对象字面量
它处于了一个量子叠加态
-如果用()去观♂察
- 它就是个函数
-如果用.或者[]去观♂察
- 就是个字面量
不过,缺点是变量A的函数态不具备访问自己的内容的能力
proto:function(){
alert(this.b);//undefined
}
函数里的this是window对象
以上纯属闲的蛋疼