你如何使用原型的Javascript范围,因此可以从函数调用它并避免全局变量调用

时间:2015-09-14 21:23:52

标签: javascript oop prototype prototype-programming

我已经利用Javascript的原型来创建一个易于访问的方法,但是我无法组建一个可用于调用这些方法的正确类。

任何人都知道如何通过使用原型方法实例化对象?

需要作用域的代码

    var property = function () {};

    property.prototype.get = function () {
        return this.value;
    };

    property.prototype.set = function (value_) {
        this.value = value_;
    };
 ////////////////////////////////

    var id = function (id) {
        property.call(this);
        this.value = id;
    };
    id.prototype = Object.create(property.prototype);
    id.prototype.constructor = id;

 ////////////////////////////////

 var b = new id(5);
 var d = new id('A');

 ////////////////////////////////

 b.get(); //5
 d.get(); //A
 b.set('a'); //a
 d.set('b'); //b
 b.get(); //a
 d.get(); //b

Desired - 将操作代码插入类

var property = function(data) {

    property.prototype.get = function () {
         console.log(this.value);
         return this.value;
     };
     property.prototype.set = function (value_) {
         this.value = value_;
     };
     return{
        id: function() {
            //code here
        },
        foo: function() {
            //code here
        },
        data: function() {
            //code here
        },

许多尝试失败的尝试之一。

var property = function () {
    return {
        id: function (id) {
            VenueContentRow.call(this);
            this.value = id;
            this.prototype = Object.create(property.prototype);
            this.prototype.constructor = this;
        }
    }
};
property.prototype.get = function () {
    console.log(this.value);
    return this.value;
};
property.prototype.set = function (value_) {
    this.value = value_;
};

////////////////////////////////
var test = new property();
var d = new test.id('A');
////////////////////////////////

d.get();
d.set('b');
d.get();

P.S。 - 如果我的术语引起混淆,请抱歉。

1 个答案:

答案 0 :(得分:0)

如果我理解你想要做的是将一个构造函数附加到原型上,那么你可以这样做:

var thing = new Thing();
var otherThing = new thing.OtherThing();

如果是这样,就像将函数附加到原型一样简单:

var property = function(){};
property.prototype.get = function() { ... };
property.prototype.set = function(value_) = { ... };

// Here's your extra constructor
property.prototype.id = function(id) {
    this.value = id;
};
property.prototype.id.prototype = Object.create(property.prototype);
property.prototype.id.constructor = property.prototype.id;

或者如果你想要它更清洁:

var id = function(id) {
    this.value = id;
};
id.prototype = Object.create(property.prototype);
id.constructor = id;

property.prototype.id = id;