Alf*_*aar 5 javascript anonymous-function
函数对象具有名为name的非标准属性.有谁知道改变它的方法?或者任何其他方式来更改匿名函数的名称?如果JavaScript可以创建动态命名的变量,那将是很好的,但它似乎只能创建公共对象属性名称.
我想做什么?
我正在努力实现这样的目标.
// o - literal object, or json
// c - string
function givemeConstructor(o, c, a}){
var a = a || 'Object';
// check other variables
var cons;
if(a === 'Object'){
cons = function(){};
for(p in o) cons.prototype[p] = o[p];
cons.name = c;
}
else{
// a way to create a constructor that inherits from a
// adds object as new prototype
}
return cons;
}
var cons = givemeConstructor({x:1,y:1, toString:function(){return '['+ x + ','+ y+'']'}, 'Point'})
Run Code Online (Sandbox Code Playgroud)
最终得到一个内省的对象.
我不清楚您在这里使用的模式,但令人困惑的是,name向构造函数添加属性不允许您以该名称引用它。它的“名称”是您分配给它的任何变量。
根据您到目前为止所做的事情,我认为这会给您带来您想要的 -
function givemeConstructor ( proto ){
var tmp = function(){};
tmp.prototype = proto;
return tmp;
}
var Point = givemeConstructor( {x:1 ,y:1, toString:function(){return '['+ this.x + ','+ this.y +']' } } );
var p = new Point;
Run Code Online (Sandbox Code Playgroud)
笔记:
this.x和this.y访问原型中的变量x和参数yPoint.prototype或实例化并检查pFunction.name为Point毫无意义,并且不会改变构造函数的引用方式。| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |