使用John Resig的简单Javascript继承需要帮助

y53ybaqx  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(79)

John Resig的简单Javascript继承:http://ejohn.org/blog/simple-javascript-inheritance/
我试着做这样的事:

var SomeClass = Class.extend({
    init: function() {
        var someFunction = function() {
            alert(this.someVariable);
        };

        someFunction(); // should alert "someString"
    },

    someVariable: "SomeString"
});

var someClass = new SomeClass();

这应该会提醒"someString",但它没有,因为在闭包函数someFunction中,this的值没有引用该类,而是被更改了。这使我无法访问闭包函数中类的属性和函数。
有什么建议吗?

72qzrwbm

72qzrwbm1#

我相信你的问题在于"this"指的是什么,"this"在这种情况下指的是功能,而不是对象,你想要的大概是:

var SomeClass = Class.extend({
    init: function() {
        var self = this;
        var someFunction = function() {
            alert(self.someVariable);
        };

        someFunction(); // should alert "someString"
    },

    someVariable: "SomeString"
});

var someClass = new SomeClass();

相关问题