javascript - 用户定义的函数如何在 javascript 中继承原型属性
问题描述
我很困惑,有人可以指导一下,在javascript中,如果Function对象(Function.prototype)的原型属性没有原型属性,那么用户定义的函数怎么会自动拥有它的原型属性。喜欢
function f(){
}
f.prototype.
谢谢
解决方案
JavaScript 中几乎所有的对象都有原型属性。通过使用它,更具体地说是原型链,我们可以模拟继承。原型是对另一个对象的引用,当 JS 在当前对象上找不到您要查找的属性时,就会使用它。简单地说,每当你调用一个对象的属性并且它不存在时,JavaScript 就会去原型对象那里寻找它。如果找到它,它将使用它,如果没有,它将转到该对象的属性并查看那里。这可以在返回 undefined 之前一直冒泡到 Object.prototype。这是原型链的本质,也是 JavaScript 继承背后的行为。
function Animal(name) {
this.name = name;
}
Animal.prototype.sleep = function() {
console.log(this.name + ': Zzz...');
}
function Dog(name) {
this.name = name;
}
// Create a reference for the prototype
Dog.prototype = Object.create(new Animal());
Dog.prototype.makeSound = function() {
console.log(this.name + ': Woof woof!');
}
var dog = new Dog('Lassie');
dog.makeSound(); // Lassie: Woof woof!
dog.sleep(); // Lassie: Zzz...
dog.missing(); // Throws Error
完整参考:https ://hackernoon.com/understanding-javascript-prototype-and-inheritance-d55a9a23bde2
推荐阅读
- android - 如何在 Final Android App 中的 WebView 上添加 Imageview
- entity-framework - 实体框架实体继承和自定义属性
- javascript - 没有文本时隐藏下拉值
- soap - 如何获取 SOAP 消息的“SignatureValue”和“DigestValue”值?
- python - Flask API 无法返回队列的值 - queue.get()
- google-apps-script - 创建多个函数 onEdit(e) 以在一个脚本中工作
- regex - Oracle REGEXP_SUBSTR 将不匹配点字符
- git - 项目根目录中的 Git 状态显示子模块更改,但在子模块中,没有可用的
- java - 使用构造函数和getMethods在main方法之外的类之间交换变量
- java - 同一 JPA 数据源的多个用户