簡體   English   中英

訪問JS私有方法

[英]Accessing JS Private Methods

我正在嘗試制作一個JS對象並訪問私有方法。 嘗試返回函數時遇到的問題是無法訪問私有方法。 下面的代碼。

var Item = (function() {

    var price = 0;
    var name = '';
    var description = '';
    var quantity = '';
    var attributes = {};

    var Item = function(data) {

    }

    function setPrice(variable) {
        this.price = variable;
    };

    function getPrice() {
        return this.price;
    };

    function setName(variable) {
        this.name = variable;
    };

    function getName() {
        return this.name;
    };

    function setDescription(variable) {
        this.description = variable;
    };

    function setQuantity(variable) {
        this.quanity = variable;
    };

    return function(data){

        setPrice : setPrice;
        getPrice : getPrice;
        setName : setName;
        setDescription : setDescription;
        setQuantity : setQuantity;

        return new Item(data);
    }

})();

item2 = Item();
    item2.setPrice('3');
alert(item2.getPrice());

使用此設置,如何訪問私有方法?

我認為該模式無法滿足您的需求。 我認為使用這樣的模式將使您的代碼更小,更可重用。 這樣,您還可以擺脫set功能。

var Item = function(options) {

    var opts = $.extend({
        price: 0,
        name: '',
        description: '',
        quantity: '',
        attributes: {}
    }, options);

    // ...
    this.getPrice = function() {
        return opts.price;
    };

    // ...
};

var item = new Item({
    price: 100,
    name: 'onehundred',
    // ...
});

alert(item.getPrice());

在此處修復了您的代碼: http//jsfiddle.net/pratik136/JryAk/

項目已更改:

  • 檢查您的return
  • Item是一個item2 ,您試圖實例化一個類對象item2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM