分配对象和它的原型方法

时间:2017-03-05 14:41:53

标签: javascript prototype javascript-objects prototypal-inheritance

我想将对象及其方法分配给原型,我的正常情况类似于

var Page = function (){
    _page = {
        id: 1,
        getValue : function (){

        },

        UI :  {
            display : function (){
                console.log('display layout');
            }
        }
    }
    return _page;
}    

var mypage = new Page()
mypage.UI.display();

在我的情况下,可能有很多 Page 类的实例,所以我想用原型初始化 UI 对象,所以 UI 和它的方法可以共享给所有 Page 实例。为实现这一目标,我可以使用__proto__,如下所示,

_page.__proto__.UI =  {
    display : function (){
        console.log('display layout');
    }
}

var Page = function (){
    _page = {
        id: 1,
        getValue : function (){
        
        }
        
    }
    
    _page.__proto__.UI =  {
        display : function (){
            console.log('display layout');
        }
    }
    return _page;
}    

var mypage = new Page()
mypage.UI.display();

但是这个__proto__已被弃用,那么有什么更好的方法可以实现这一目标吗?

无需使用原型初始化 UI ,无论多少Pages实例都可以正常使用,这会对性能产生影响吗?

2 个答案:

答案 0 :(得分:1)

这样做:

function Page (){
    this.id = 1;
}    

Page.prototype.getValue = function (){

};

Page.prototype.UI = {
    display : function (){
        console.log('display layout');
    }
};

重要的是,在构造函数中,您不需要return,而是将对象的属性分配给this,因为这是Page的真实实例。这样就可以使用prototype链。

答案 1 :(得分:0)

你应该使用另一个类模式,如下所示:

var Page = (function(glob) {
  function Page() {
     this.id = 1;
  }

  Page.prototype.method = function() { 
    // ...
  }
  return Page;
}(window))