Javascript”;类“;带有参数的扩展
Javascript "class" extension with parameters?
我想从现有类"扩展"一个新类,并包括它的方法和参数构造。
System = function(name, hp){
this.name = name;
this.hp = [];
this.setHP = function(hp){
this.hp[0] = hp;
this.hp[1] = hp;
}
this.setHP(hp);
}
Weapon = function(name, hp){
System.call(this);
}
Weapon.prototype = new System(name, hp);
Weapon.prototype.constructor = Weapon;
var gun = new Weapon("Gun", 10); // undefined name, hp
var hangar = new System("Hangar", 10); // works
所以,这是我所了解的,显然有人错了。有人能给我建议吗?
您需要在调用中传递参数:
System.call(this, name, hp);
此外,要注意Weapon.prototype = new System(name, hp);
可能有副作用,最好使用
Weapon.prototype = Object.create(System.prototype);
如果您需要支持古老的浏览器,可以为Object.create
找到polyfill。
System = function(name, hp){
this.name = name;
this.hp = [];
this.setHP = function(hp){
this.hp[0] = hp;
this.hp[1] = hp;
}
this.setHP(hp);
}
Weapon = function(name, hp){
System.apply(this, arguments);
}
console.log(new Weapon("Gun", 10));
console.log(new System("Hangar", 10));
结果:
Weapon {name: "Gun", hp: Array[2], setHP: function}
System {name: "Hangar", hp: Array[2], setHP: function}
相关文章:
- Javascript”;类“;带有参数的扩展
- 如何在扩展jQuery方法时传递参数
- 在NativeScript中使用泛型参数扩展Android类
- 在javascript中使用rest参数和扩展运算符
- 将一个额外的参数传递给分页扩展程序
- Knockout:可以在没有参数的情况下调用可观察的扩展器
- 在Chrome V8中实例化从Object扩展的类时,super()不传递参数
- 剑道 UI 网格扩展筛选器参数
- 文件扩展名正则表达式的节点参数
- 使用参数扩展 JavaScript 函数
- Safari扩展,打开带有HTML页面的新选项卡,传递参数
- Google Analytics(分析)跟踪 - 可扩展参数 (utme) 未显示在请求_utm.gif
- Angular ui路由器在路径参数后扩展url
- 传递的参数没有明确说明javascript Chrome扩展
- 参数不起作用的Chrome扩展-js
- 在JavaScript中解析传入的JSON-“;扩展参数”;
- Node.js Express,路由器,最优参数作为扩展
- 我怎么能通过一个url参数从我的应用程序到Chrome扩展
- 当我需要使用带参数的构造函数时,如何使用Rhino继承(扩展)Java类?
- 为什么JSF以文件扩展名. JSF和GET参数ln=js交付JavaScript资源?