JavaScript原型扩展
JavaScript prototype extending
我正在尝试扩展一个抽象对象。
var Abstract = function() { code = 'Abstract'; };
Abstract.prototype.getCode = function() { return code; };
Abstract.prototype.getC = function() { return c; };
var ItemA = function() { code = 'ItemA'; c = 'a'; };
ItemA.prototype = Object.create(Abstract.prototype);
ItemA.prototype.constructor = ItemA;
var ItemB = function() { code = 'ItemB'; };
ItemB.prototype = Object.create(Abstract.prototype);
ItemB.prototype.constructor = ItemB;
var b = new ItemB();
console.log(b.getCode());
var a = new ItemA();
console.log(b.getCode());
console.log(b.getC());
结果:ItemB
ItemA
a
我在ItemB实例中获得ItemA的范围有什么特别的原因吗?我该怎么修理它?
这是因为您正在使用全局变量。通过使用this
关键字:
var Abstract = function() { this.code = 'Abstract'; };
Abstract.prototype.getCode = function() { return this.code; };
Abstract.prototype.getC = function() { return this.c; };
var ItemA = function() { this.code = 'ItemA'; this.c = 'a'; };
ItemA.prototype = Object.create(Abstract.prototype);
ItemA.prototype.constructor = ItemA;
var ItemB = function() { this.code = 'ItemB'; };
ItemB.prototype = Object.create(Abstract.prototype);
ItemB.prototype.constructor = ItemB;
虽然在这种情况下ItemB.getC()
将返回undefined
相关文章:
- “util.inherits”和在NodeJS中扩展原型之间的区别
- JavaScript:动态扩展原型是一种糟糕的做法
- 使用第二个原型扩展对象
- 如何在Typescript中添加具有扩展原型的文件
- 如何扩展使用原型的javascript模块
- 在ECMAScript 5之后重新扩展本机原型
- 具有扩展原型的JavaScript本地对象;在“;环
- 如何使用Javascript扩展对象'的原型使用声明中的变量
- document.registerElement-为什么我们需要同时指定'原型'和'扩展'
- 在Javascript中扩展继承的原型方法
- Javascript扩展对象's原型,但保留旧原型
- 原型&在SAPUI5(Component.js)中进行扩展
- 用原型扩展Javascript Form对象
- 如何为特定的javascript对象扩展数组或对象原型
- 如何在完全独立的.js文件中覆盖/扩展原型.js类
- 希望扩展原型方法
- 使用装饰器扩展原型
- 覆盖和扩展原型
- 扩展原型方法
- jQuery是否保证它与Array或Object的扩展原型的兼容性?