所以我有一个名为“createGameObjectConstructor”的函数,它接受一个函数,一个原型将一个原型和一个方法添加到函数中然后返回函数。它可以像这样使用
Monster = createGameObjectConstructor(function () {
this.evilness = 9001;
}, {
eatHuman:function () {
console.log('human consumed');
}, type:'scary'
});
和“createGameObjectConstructor”看起来像这样
createGameObjectConstructor = (function () {
var recent = function () { //every actual object constructor will share this method
return (instance.length> 0) ? instance[instance.length - 1] :null;
};
return function (constructor, prototype) { //createGameObjectConstructor
var instanceArray = new Array();
constructor.prototype = prototype;
return function (){ //actual object's constructor
var instance = new constructor();
instance.constructor = constructor;
instanceArray.push();
return instance;
};
f.recent = recent;
return f;
}
}());
但是当我在Chrome的控制台中调用Monster().eatHuman();
时,它会返回未定义的函数,但旁边有一个奇怪的箭头,这是因为我奇怪的编码导致它过于评估代码还是什么?
这是一个小提琴http://jsfiddle.net/UZmL9/
答案 0 :(得分:1)
这只是意味着函数的返回值为undefined
。
如果找不到明确的return
语句,则所有JavaScript函数return undefined
by default。
function foo(){
console.log("Hi");
}
foo(); // you will get the same 'undefined'
但是
function foo(){
console.log("Hi");
return 5;
}
foo(); // you will get 5 with that arrow