博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
prototype对象的真正作用
阅读量:6671 次
发布时间:2019-06-25

本文共 1386 字,大约阅读时间需要 4 分钟。

参考阮一峰的文章:

prototype对象的真正作用

在JavaScript语言中,每一个对象都有一个对应的原型对象,被称为prototype对象。定义在原型对象上的所有属性和方法,都能被派生对象继承。这就是JavaScript继承机制的基本设计。prototype对象的作用,就是定义所有实例对象共享的属性和方法,所以它也被称为实例对象的原型,而实例对象可以视作从prototype对象衍生出来的。

function Cat(name, color) {  this.name = name;  this.color = color;  this.meow = function () {    console.log('mew, mew, mew...');  };}var cat1 = new Cat('大毛', '白色');var cat2 = new Cat('二毛', '黑色');cat1.meow === cat2.meow// falsefunction Animal (name) {  this.name = name;}Animal.prototype.color = "white";var cat1 = new Animal('大毛');var cat2 = new Animal('二毛');cat1.color  ===  cat2.color//true原型链

“原型链”的作用在于,当读取对象的某个属性时,JavaScript引擎先寻找对象本身的属性,如果找不到,就到它的原型去找,如果还是找不到,就到原型的原型去找。以此类推,如果直到最顶层的Object.prototype还是找不到,则返回undefined。

举例来说,如果让某个函数的prototype属性指向一个数组,就意味着该函数可以用作数组的构造函数,因为它生成的实例对象都可以通过prototype属性调用数组方法。

 

function MyArray (){}MyArray.prototype = new Array();MyArray.prototype.constructor = MyArray;var mine = new MyArray();mine.push(1, 2, 3);mine.length // 3mine instanceof Array // true

Object.create方法

Object.create方法用于生成新的对象,可以替代new命令。它接受一个对象作为参数,返回一个新对象,后者完全继承前者的属性,即前者成为后者的原型。

var o1 = { p: 1 };var o2 = Object.create(o1);o2.p // 1

上面代码中,Object.create方法在o1的基础上生成了o2。此时,o1成了o2的原型,也就是说,o2继承了o1所有的属性的方法。Object.create方法基本等同于下面的代码,如果老式浏览器不支持Object.create方法,可以用下面代码自己部署。

 

另外可以参考一篇文章:https://segmentfault.com/a/1190000008739672

 

转载于:https://www.cnblogs.com/linux-centos/p/5566372.html

你可能感兴趣的文章
js复制input到剪切板(ie内核浏览器)单个input简洁版
查看>>
mysql.sock丢失解决
查看>>
BISO
查看>>
好程序员分享http的keep-alive和tcp的keep-alive区别
查看>>
tomcat调优方案
查看>>
Cisco2950 2960 交换机基本配置命令
查看>>
IE打印控件
查看>>
Java简单实现固定长度队列
查看>>
jenkins学习
查看>>
Oracle中两表关联更新
查看>>
定制 Kali Linux Live USB 的另一种方法
查看>>
OpenCV在ubuntu下的编译
查看>>
解决@Override错误
查看>>
Android插入物理键盘的同时显示软键盘
查看>>
tmux使用
查看>>
简单的spring-data集成mongoDB项目,实现crud的功能
查看>>
kernel和iptables补丁创建和安装
查看>>
mongodb 备份和还原
查看>>
LVS基本介绍及NAT模型配置示例
查看>>
关于开源驰骋工作流引擎ccbpm对bpmn2.0的支持
查看>>