本继承方法仍然是基于JavaScript原型属性来实现的.
Function.prototype.inherit = function(parent){ this.prototype = Object.create(parent.prototype); this.prototype.constructor = this; };
本方法扩展到Function对象上,目的是让JavaScript中所有的构造函数都拥有此方法.
参数说明:
* parent: 被继承的父类构造函数.
用法示例如下:
Function.prototype.inherit = function(parent){ this.prototype = Object.create(parent.prototype); this.prototype.constructor = this; }; function People(name,age){ this.name = name; this.age = age; } People.prototype = { getName:function(){ return this.name; }, say:function(){ console.log("hello"); } }; function Student(name,age,id){ People.call(this,name,age); this.id = id; } Student.inherit(People); Student.prototype.getId = function(){ return "this id is " + this.id; }; var s = new Student("Jhon",22,3.1415926); console.log(s.getName()); console.log(s.say()); console.log(s.getId()); console.log(s.constructor);
相关推荐
子类型构造函数的原型被替换为超类型构造函数的一个实例,这样子类型就可以继承超类型的所有属性和方法。使用原型链继承时,需要注意的是,如果使用对象字面量添加方法到子类型的原型中,会重写原型链,导致继承失效...
对象继承允许一个对象(子对象)从另一个对象(父对象或基对象)那里获取属性和方法,从而实现代码的复用和组织。`zInherit`是JavaScript中一种常见的对象继承实现方式。 在JavaScript中,有多种实现继承的方法,...
然后,`Cat.prototype`被设置为`new Pet()`,这样`Cat`就继承了`Pet`的所有方法和属性。最后,`Cat.prototype`上添加了一个`action`方法,表示猫的行为。 示例中创建了一个`Cat`实例`petCat`,并展示了如何调用其...
一个函数作为构造函数,`this`关键字用于初始化实例属性,而方法通常添加到构造函数的`prototype`对象上,以便所有实例都可以访问。例如,`Person`类就是这样创建的: ```javascript function Person(name) { this...
例如,我们可以创建一个 Walk 对象和一个 Fly 对象,然后将它们组合成一个 Pegasus 对象,这样 Pegasus 对象就可以拥有 Walk 和 Fly 的所有方法。 在 JavaScript 中,继承机制的目的是为了实现代码复用和提高编程...
当尝试访问对象的一个属性时,JavaScript会首先在当前对象中查找,如果找不到,就会沿着原型链向上查找,直到找到为止。 4. **继承**:JavaScript支持多种继承方式,如原型链继承、构造函数继承、组合继承、原型式...
结合寄生继承和组合继承的优点,子类先通过寄生方式创建一个没有父类引用的新对象,然后将子类的属性添加到这个新对象,最后将新对象设置为子类的原型。这是目前最常用的继承方式,因为它避免了构造函数的重复调用和...
创建一个对象时,它可以继承另一个对象的属性和方法。 ```javascript function Person(name, age) { this.name = name; this.age = age; } Person.prototype.greet = function () { console.log(`Hello, my name...
原型(prototype)是JavaScript中实现继承的关键,每个函数都有一个prototype属性,这个属性指向一个对象,该对象的属性和方法会被实例继承。当你创建一个新对象时,如果没有指定构造函数,那么这个新对象就会从...
通过`Object.create()`方法或者直接修改`__proto__`属性,可以为对象添加新的方法或属性,实现对现有对象的扩展。 7. **ES6的类语法**: ES6引入了类的语法糖,使得JavaScript的面向对象编程看起来更接近传统的类...
在 JavaScript 中,每个对象都有一个原型对象,这个原型对象可以包含属性和方法。当尝试访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,则会沿着原型链向上查找,直到找到为止或者到达原型链的顶端...
例如,跑车类可以从汽车类继承所有属性和方法,同时添加额外的速度限制和性能调优。 - **多态**:多态允许在程序中使用一个接口来表示多种不同的类型,这意味着一个函数可以处理不同类型的对象。多态增强了代码的...
通过`Person.prototype`,我们为所有由`Person`创建的对象添加了一个共享的方法`sayHello`。这种方法的共享特性是JavaScript实现类似面向对象编程的关键之一。 #### 原型链 原型链是JavaScript中对象查找机制的...
- **JavaScript与OOP**:虽然JavaScript并不是从一开始就设计为面向对象的语言,但它具备了面向对象编程的所有核心特性,例如封装、继承和多态。 - **构造函数与原型链**: - **构造函数**:用于创建对象实例的...
4. **原型对象**:每个函数都有一个`prototype`属性,这个属性是一个对象,可以添加属性和方法。当试图访问实例对象上的属性或方法时,JavaScript会向上查找原型链。 5. **闭包和作用域**:虽然这不是面向对象特性...
每个JavaScript对象都有一个内部[[Prototype]]链接到另一个对象,这通常是其构造函数的prototype属性。通过这种方式,一个对象可以“继承”另一个对象的属性和方法。在控件开发中,我们通常会创建一个基础控件类,...
类支持继承,通过`extends`关键字,一个类可以继承另一个类的属性和方法。 以上只是JavaScript对象涉及的一部分知识点,JavaScript参考手册.chm文件很可能会包含这些话题的详细解释和实例。对于开发者来说,深入...
在书中举例说明了如何通过构造器函数来创建对象,并利用原型(prototype)给对象添加方法。在JavaScript中,构造函数和原型是实现面向对象的关键机制。例如,Lecture构造函数接受两个参数name和teacher,将它们作为...
- **装饰器模式**:动态地给一个对象添加新的职责。适用于扩展对象功能而又不改变其结构的情况。 - **观察者模式**:当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。适用于实现事件驱动...