javascript - 将对象及其方法分配给原型(prototype)

标签 javascript prototype javascript-objects prototypal-inheritance

我想将对象及其方法分配给原型(prototype),我的正常情况是这样的

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类的实例,所以我想用原型(prototype)初始化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__已弃用,那么有没有更好的方法可以实现此目的?

或者

不需要用原型(prototype)初始化UI,无论有多少Pages实例,我们都可以照常使用它,这会影响性能吗?

最佳答案

这样做:

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

Page.prototype.getValue = function (){

};

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

重要的是,在构造函数中不要返回,而是将对象的属性分配给this,因为这是 Page< 的真实实例。这将使使用prototype链成为可能。

关于javascript - 将对象及其方法分配给原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42609725/

相关文章:

javascript - 如何使用 Angular.js 添加/删除 onClick 列表项?

javascript - Jquery 可折叠区域

javascript - 函数的正确原型(prototype)链

javascript - 在 JS 中将参数作为单独的参数传递

javascript - 将多级 javascript 对象输出到 html 列表中

javascript - 在javascript中动态生成新 Canvas

javascript - 即使 Node 服务器成功运行,index.html 也不会加载

javascript - 当 String 在 JavaScript 中工作时,无法在 Number 上调用声明的原型(prototype)

使用除法运算符的 JavaScript 除法错误

javascript - 在javascript中展平嵌套对象