我想将对象及其方法分配给原型,我的正常情况类似于
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实例都可以正常使用,这会对性能产生影响吗?
答案 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))