如果我有:
function Base (){
this.sayHi = function(){
alert('hi');
}
}
function Thing (val){
this.value = val;
}
var bob = new Thing("bob");
Run Code Online (Sandbox Code Playgroud)
有什么方法我现在可以说bob继承自Base,以便我可以调用:
bob.sayHi();
Run Code Online (Sandbox Code Playgroud)
基本上在该实例上可以使用Base类的所有方法和属性吗?
基于CMS帖子的解决方案的更相关示例:
这里的项目可以表示服务器返回的数据.
var Items = [
{ sku: 123, type:'buggy', title:'This is a title', description: 'this is a description' },
{ sku: 234, type: 'baby-monitor', title: 'This is a title 2', description: 'this is a description 2' }
]
function ItemMethods() {
this.BannerHTML = function () {
return '<div class="banner _item_' + this.type + '_' + this.sku + '"><h2>' +
this.title + '</h2><p>' +
this.description + '</p></div>';
};
}
Items.GetBySKU = function (code) {
for (var i = 0; i < Items.length; i++) {
if (Items[i].sku == code) {
return Items[i];
}
}
};
$.each(Items, function (i, item) {
ItemMethods.apply(item);
});
alert(Items.GetBySKU(234).BannerHTML());
Run Code Online (Sandbox Code Playgroud)
任何进一步的评论或解决方案很乐意接受..总是对问题的潜在解决方案感兴趣;-)
小智 7
号没有方法来分配不同的[[原型]]一个的现有对象,至少根据该说明书.的[[原型]是构造器(又名"包含在")从评价得到的对象prototype属性在新对象的创建的时间,并且不能在稍后重新分配.(我希望它可以正式更改,但唉它是一个不受支持的操作,通常可以通过不同的方法进行模拟.)
某些浏览器/环境可能会选择使用非标准方法公开创建后[[prototype]]赋值.的[[原型]](多个)对象可以被修改(例如,添加到String.prototype),或单功能可被添加到目标对象(见CMS的答案),或现有对象可以包裹(本质上是动态的"子类") - 取决于要求和限制.
此外,Javascript中没有"类":虽然"经典的单继承对象定向类"可以在Javascript中实现,但我发现限制自己限制模型或使用这样的术语.语言希望成为现实.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
1779 次 |
| 最近记录: |