AngularJS中的类 - 字段和方法

时间:2014-09-24 08:04:56

标签: javascript angularjs

让我们说我正在定义以下类,以便在我的AngularJs代码中使用:

app.factory("exampleClass", function () {
    // constructor
    function exampleClass(val) {
        this.prop1 = val;
        this.result = "";
    }

    // methods
    exampleClass.prototype = {
        doSomething: function (userVal) {
            this.result = this.prop1 + userVal; // any way to avoid this?
            console.log(this.result);
        }
    };

    // return class
    return (exampleClass);
});

// .. later in code
new exampleClass("another").doSomething("321");
console.log(scope.example.prop1);

有没有办法逃避引用类字段(prop1和结果)。在doSomething方法中,还能直接从类外引用它们吗?显然,我试图在其他现代语言中模仿像public type fieldName这样的东西 - 当这个时候。首先看不到实例变量吗?

1 个答案:

答案 0 :(得分:1)

不幸的是没有。 JavaScript(至少在浏览器支持的当前版本中)不支持从方法自动访问属性。

理论上可以通过涉及with()或局部变量和Object.defineProperty的技巧来获得所需的语法,但最终会使代码的其余部分更多丑陋。

为了获得更好的JavaScript语法,有多种语言可以编译成JavaScript。一个示例,如果CoffeeScript支持使用Ruby-esque @foo语法进行属性访问。