JavaScript:在对象内调用对象方法

分类: 365BETAPP官网 发布时间: 2025-09-14 08:50:01 作者: admin 阅读: 4622
JavaScript:在对象内调用对象方法

什么是最佳设计模式,以实现以下目标(目前不起作用)?

var obj = (function() {

// code defining private variables and methods

var _obj = {

property: value,

method1: function() {

// do stuff

},

method2: function() {

// use property

var prop = _obj.property; // obviously doesn't work

// call method1

obj.method1(); // "obj" not finished being defined yet!

}

};

// obviously now I could do...

var prop = _obj.property;

return _obj;

})();

// and I could now do...

obj.method1();

我认为应该有效的一种变化是:

var obj = (function() {

var property = value,

method1 = function() {

// do stuff

},

method2 = function() {

// use property

var prop = property;

// call method1

method1();

},

_obj = {

property: property,

method1: method1,

method2: method2

};

return _obj;

})();

同样地,对于需要使用new运算符创建的对象,它是如何工作的呢?在构造函数内部,您可以编写this.method()。但是,如果您希望保持构造函数较小,仅定义那些可能在创建时进行自定义的内容,然后在原型中定义其余内容呢?(这似乎是常见的模式。)原型中的属性/方法是否可以以任何方式交互?

var MyObj = function(name) {

this.name = name;

};

var obj = new MyObj('Bob');

MyObj.prototype = {

called_often: function() {

// lots more code than just the following

return document.getElementById('someID').value;

},

global_default: 'value', // can be changed, so need to pull value when run

does_stuff: function(value) {

var str = global_default + value, // can't access global_default on its own

input = MyObj.called_often(), // doesn't work; MyObj.prototype.called_often() DOES

name = this.name; // 'this' used in the prototype doesn't work

// even within a created object

return name + input + str;

}

};

当我遇到这个问题时,我相信有更好的方法来达到我的目标。这段代码不是特定情况下的,只是说明了一般性问题。因此,你可能无法为我解决特定情况下遇到的问题。但是也许你可以帮助我整体思考。

相关文章

《传奇手游》深度评测:重温经典,再现辉煌-《传奇手游》如何保持玩家热度并不断创新 ...
探索男体摄影:镜头下的帅气男模与艺术之美
什么胆什么什么的成语
《醉仙武》玩法攻略