[JavaScript]关于prototype继承
When it comes to inheritance, JavaScript only has one construct: objects. Each object has a private property which holds a link to another object called its prototype. That prototype object has a prototype of its own, and so on until an object is reached with null as its prototype. By definition, null has no prototype, and acts as the final link in this prototype chain. It is possible to mutate any member of the prototype chain or even swap out the prototype at runtime, so concepts like static dispatching do not exist in JavaScript.
每个实例对象(object)都有一个私有属性(称之为 __proto__)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(__proto__),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
几乎所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。
就是说,JavaScript 中的对象都是继承而来,所有的对象都是由一个最简单的对象不断增加特定的功能而形成的。
使用prototype添加属性和方法
Before:
//创建类
function Duck(){
name = "RoastDuck";
age = 18;
hobby = "eat";
}
//添加属性
Duck.prototype.home("China");
//添加方法
Duck.prototype.action=function(){
console.log("Roast is enoding");
};
After:
function Duck(){
name = "RoastDuck";
age = 18;
hobby = "eat";
//添加的属性
home = "China";
//添加的方法
action = function(){
console.log("Roast is enoding");
};
}
最新文章
- SQL语句执行效率及分析(note)
- 浅谈 switch和if
- 【kAriOJ】离散数学春季学期编程测试 1
- 浅谈CSS样式png、gif、jpg图片优化的方法
- ws318 配置
- sql server where、group by、order by 执行顺序
- 1023: [SHOI2008]cactus仙人掌图 - BZOJ
- 如果iis的配置文件 applicationHost.config坏掉了, 会在 C:\inetpub\history\ 中存储历史备份。复制过去还原就可以了-摘自网络
- C 语言字符串(译)
- Asp.net 导航条【1】
- oralce中exists not exists in not in对于NULL的处理
- rhel Linux系统yum的配置
- 关于javascript removeChild的那些事
- Docker之进入容器(三)
- Luogu 2766 - 最长不下降子序列问题 - [LIS问题][DP+网络流]
- Disk
- spring rest 容易被忽视的后端服务 chunked 性能问题
- SQL SERVER利用BCP命令在命令行下导出数据到csv文件中
- Android 多用户多缓存的简单处理方案
- Python day19 模块介绍3(sys,json,pickle,shelve,xml)