javascript从外部作用域变量访问成员函数

时间:2011-06-28 04:55:27

标签: javascript

我一直在jsfiddle中尝试一些js代码,似乎我不能让下面的所有代码组合起作用..

//combination #1    
function get_set() {
    this.get = function () {
        document.write("get");
    };
    this.set = function () {
        document.write("set");
    };
};

var x = get_set; // storing function reference in x
x.get(); //invoking doesnt work.

//combination#2
var get_set = function() {
    this.get = function () {
        document.write("get");
    };
    this.set = function () {
        document.write("set");
    };
};

get_set.get(); //doesnt work as well..

有什么我想念的吗?提前感谢建设性的建议/指出任何错误。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

您必须创建get_set

的新实例
var x = new get_set();

或在get_set内,您必须使用return this;才能使用此示例。

答案 1 :(得分:3)

您的get_set函数是构造函数函数。它旨在创建('构造')自身的实例。为了完成这项工作,您需要关键字new。所以

var getset = new get_set;

创建get_set的实例。现在可以使用方法getset.setgetset.get

在这种情况下,您可以使用Object literal创建一个唯一的实例:

var get_set = {
    get: function () {
        document.write("get");
    },
    set: function () {
        document.write("set");
    }
};

现在您不需要new关键字,并且这些方法可以立即使用(get_set.getget_set.set

答案 2 :(得分:0)

使用x = new get_set;这将有效。