none
请问如何在JS的类里面写属性(Property)? RRS feed

  • 问题

  • 就是在JS里面,自己写了一个类对象,如何给类设置属性?

    例如一个Circle类,有一个radius(半径属性),当设置这个属性的时候,希望能执行一段代码,例如计算面积之类的等等。

    circle.radius = 10;

    我所能理解的JS,类里面好像只能够写方法?请高手指点一下,谢谢。


    da jia hao!
    2011年5月24日 2:27

答案

  • 在JS中,可以这样

        function Circle(radius) {
            // set property
            this.radius = radius;
        }
       
        // define method
        Circle.prototype.area = function () {
            return 2 * 3.14 * this.radius
        }
       
        // instantiate
        mycircle = new Circle(10);
       
        // call
        alert(mycircle.area());

    2011年5月26日 2:10
    版主
  • get的话,就直接通过 mycircle.radius 获取。

    2011年5月26日 9:39
    版主

全部回复

  • liubin,您好。 据我所知,目前Javascript的事件都是基于HTML DOM树的。

    您所想要的功能,目前是无法实现的。

    建议您不要纠结这个问题。 

    您可以这样:

    circle.radius = 10;

    circle.compute_radius = function(){//code here...}

     


    因为太笨,所以努力!
    2011年5月24日 3:50
  • 在JS中,可以这样

        function Circle(radius) {
            // set property
            this.radius = radius;
        }
       
        // define method
        Circle.prototype.area = function () {
            return 2 * 3.14 * this.radius
        }
       
        // instantiate
        mycircle = new Circle(10);
       
        // call
        alert(mycircle.area());

    2011年5月26日 2:10
    版主
  • 谢谢了。

    就是说,在JS里面,的确不能像C#那样,可以自己定义“set”和“get”的方法,是吗?


    da jia hao!
    2011年5月26日 9:16
  • get的话,就直接通过 mycircle.radius 获取。

    2011年5月26日 9:39
    版主
  • JS中没有“set"和"get"的”系统内置“方法,

    事实上,即使在C#中,对于set和get的使用。最终编译器也会将此转换为set_Property 和 get_Property这样的方法。所以JS上也可以按照方法去获取数据和设置数据。


    虚心学习,学以致用
    2011年5月26日 12:58