我可能会用错误的词语来描述我的问题。
在我的浏览器的开发者工具中,在DOM下,我想扩展其中的一个。例如,如果我写这个:
var MY = function () {
function sayWhat() {
console.log('Chicken butt');
};
return {
sayWhat: sayWhat
};
}();
然后我出现在DOM中。现在,为了避免混乱并保持组织有序,我想要另一个DOM来扩展它。像这样:
var MY.CUSTOM = function () {
function sayWhy() {
console.log('Chicken thigh');
};
return {
sayWhy: sayWhy
};
}();
这样我就可以运行MY.sayWhat()和MY.CUSTOM.sayWhen()
对我说这个问题的正确方法是什么,我如何做我想做的事情,并且我是否遵循最佳做法?
答案 0 :(得分:2)
回答第一个问题,这些不是DOM对象,而是全局范围内的纯JavaScript对象。这意味着您可以在页面上运行JavaScript的任何位置访问您的对象。要阅读有关JavaScript范围的更多信息,请阅读以下文章:http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/
至于你想要做什么,这被称为对象继承,实际上有许多不同的方法可以在JavaScript中完成。如果您想要一个简单的解决方案,我建议在这里找到John Resig的解决方案:http://ejohn.org/blog/simple-javascript-inheritance/
这将允许您创建一个对象并像这样扩展它:
var My = Class.extend({
sayWhat: function () {
console.log("Chicken butt");
}
});
var MyCustom = My.extend({
sayWhen: function () {
console.log("Chicken thigh");
}
});
var m = new My();
m.sayWhat(); // => "Chicken butt"
var m2 = new MyCustom();
m2.sayWhen(); // => "Chicken thigh"
m2.sayWhat(); // => "Chicken butt"
希望有所帮助!