将变量发送到子函数而不发送到JavaScript中的主对象?

时间:2013-08-26 02:33:50

标签: javascript

我想像这样创建一个Object:

Object = function () {
    this.Subfunction = function (Data) {
        alert('Data');
    }
}

并且能够从对象外部调用它,如下所示:

var Object = new Object();
Object.Subfunction(Data);

每次我想在Data中运行任何内容时,必须通过Object发送Object非常不方便。

3 个答案:

答案 0 :(得分:2)

  

每次都必须通过对象发送数据真的很不方便   我希望在Object中运行任何东西

这就是面向对象编程的美妙之处。对象可以保存数据并附加行为。如果您想避免一直传递data,可以使用constructor函数初始化并存储data作为新创建实例的成员。

例如:

function SomeObject(data) {
    this.data = data; //store data
}

SomeObject.prototype.doSomething = function () {
    console.log(this.data); //use data
};

var o = new SomeObject('some data as string');

o.doSomething(); //no need to pass data anymore

答案 1 :(得分:1)

函数移动到原型可能更适合你

MyObject = function () {};
MyObject.prototype.subFunction = function (data) {console.log('Data', data);};

// this still works
var myObject = new MyObject();
myObject.subFunction('foo');

// this also works
MyObject.prototype.subFunction('bar');

请注意,在示例中,您不需要使用new,但是那时它不是特定于实例的(this设置为原型除非手动选择上下文。

答案 2 :(得分:1)

也许您打算做的是使用传递的参数:

Object = function () {
    this.Subfunction = function (Data) {
        alert(Data);
    }
};

var test= "Hello world !";
var Object = new Object();
Object.Subfunction(test);

这是小提琴:http://jsfiddle.net/3EpSy/