【发布时间】:2013-06-23 21:45:39
【问题描述】:
我有一个这样的对象:
var source = (function(undefined) {
var o;
function s(o) {
if(!o || typeof o === 'object') {
o = o || {};
o.a = typeof o.a === 'string' ? o.a : 'A';
o.b = typeof o.b === 'string' ? o.b : 'B';
this.o = o;
}
}
s.prototype.v = function() {
// some function
};
s.prototype.x = function() {
// some function
};
return s;
})();
我想用另一个类似的来扩展第一个。
var extender = (function(undefined) {
var o;
function e(o) {
if(!o || typeof o === 'object') {
o = o || {};
o.c = typeof o.c === 'number' ? o.c : 3;
o.d = typeof o.d === 'number' ? o.d : 4;
this.o = o;
}
}
e.prototype.y = function(m) {
// some function
};
e.prototype.z = function(m) {
// some function
};
return e;
})();
我可以将this.s = new source(o); 添加到函数中,对我的第二个对象进行一些小的更改可以将所有内容与第一个对象联系起来,但我认为可能有更好的方法。
【问题讨论】:
-
你到底为什么要调用你的变量
undefined?这是您在 Javascript 中可以做的最邪恶的事情之一。 -
@Antimony:不;他正在创建一个本地
undefined变量以防其他人设置window.undefined。 jQuery 就是这样做的。 -
为什么会有问题?和wtf为什么有人要设置window.undefined?
-
不知道为什么有人会这样做。但避免问题是一个好习惯。我在这里发布的代码只是一个示例。真实的代码有一些验证需要 undefined 为 UNDEFINED。
-
@SLaks 哦,这是一个巧妙的技巧。
标签: javascript