酷代码 AI
菜单
服务商

作为javascript开发,简述es6 之前使用 prototype 实现继承 ?

在ES6之前,JavaScript使用原型(prototype)来实现继承。原型是一个对象,它包含了对象的属性和方法,这些属性和方法可以被该对象的实例继承。 在JavaScript中,每个对象都有一个内部的[[Prototype]]属性,这个属性指向创建该对象的函数的原型对象。原型对象也有自己的[[Prototype]]属性,这个属性指向创建原型对象的函数的原型对象,以此类推。 当一个对象访问一个属性或方法时,如果该对象本身没有这个属性或方法,JavaScript会沿着[[Prototype]]链向上查找,直到找到为止。 例如,我们有一个Person构造函数,我们想要创建一个Student构造函数,该构造函数继承自Person构造函数: ```javascript function Person(name) { this.name = name; } Person.prototype.sayName = function() { console.log(this.name); } function Student(name, grade) { Person.call(this, name); // 将this引用传给Person构造函数 this.grade = grade; } Student.prototype = Object.create(Person.prototype); // 将Student的原型设置为Person的实例 Student.prototype.constructor = Student; // 修正Student的构造函数 var student = new Student('Tom', 'Grade 1'); student.sayName(); // 输出 "Tom" ``` 在这个例子中,我们使用Object.create方法将Student的原型设置为Person的实例,这样Student的实例就可以继承Person的所有属性和方法。然后,我们还需要将Student的构造函数修正为Student,否则在访问Student.prototype的属性和方法时,JavaScript会查找Student的构造函数的原型,而不是Student的原型。 [2023-11-09 01:47:30 | AI写代码神器 | 340点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]