【发布时间】:2012-06-14 18:36:30
【问题描述】:
所以我正在尝试通过学习 Mootools 内部的工作原理来学习 javascript。我正在看这些行:
var Type = this.Type = function(name, object){
if (name){
var lower = name.toLowerCase();
var typeCheck = function(item){
return (typeOf(item) == lower);
};
Type['is' + name] = typeCheck;
if (object != null){
object.prototype.$family = (function(){
return lower;
}).hide();
}
}
if (object == null) return null;
object.extend(this);
object.$constructor = Type;
object.prototype.$constructor = object;
return object;
};
//some more code
new Type('Type',Type);
这里发生了什么?
在底部的构造函数语句中被分配的对象是什么,全局窗口对象?
当 Type 函数似乎只更新传入的对象而不是创建一个新对象时,为什么它被作为带有 new 语句的构造函数调用?
具体来说,object.extend(this); 中的“this”是什么? ?是全局窗口对象吗,如果是的话,是否将该对象的所有键值对添加到 Type 对象中?
【问题讨论】:
标签: javascript object constructor mootools