js原型链
来源:互联网 发布:ncut算法代码 编辑:程序博客网 时间:2024/06/06 01:52
1、prototype和__proto__的区别
prototype是函数才有的属性,
在js中,对象在调用一个方法时,会首先在自身寻找是否由该方法,如果没有,则在原型链上寻找,这个原型链就是实例对象的_proto_属性。
对于实例person而言,其内部有一个原型链指针proto,该指针指向了Person.prototype指向的对象。_proto_是每个对象都有的属性
2、什么是原型链
由于_proro_是任何对象都有的属性,而js万物皆对象,所以会形成一条 连起来的链条,递归访问 必须最终到头,并且值是null
当js引擎查找对象属性时,先查找对象本身是否存在该属性,如果不存在,就会继续在原型链上查找,但不会查找自身prototype
var A = function(){};var a = new A();console.log(a.__proto__); //A {}(即构造器function A 的原型对象)console.log(a.__proto__.__proto__); //Object {}(即构造器function Object 的原型对象)console.log(a.__proto__.__proto__.__proto__); //null
3、原型链指针
函数的原型对象constructor默认指向函数本身,原型对象除了有原型属性外,为了实现继承,还有一个原型链指针__proto__,该指针指向上一层的原型对象,而上一层的原型对象的结构依然类似,这样利用__proto__一直指向Object的原型对象上,而Object的原型对象用Object.prototype.__proto__ = null表示原型链的最顶端,如此变形成了javascript的原型链继承,同时也解释了为什么所有的javascript对象都具有Object的基本方法。作者:Pursue链接:http://www.jianshu.com/p/aa1ebfdad661/來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4、原型对象
原型对象结构
Function.prototype = { constructor : Function, __proto__ : parent prototype, some prototype properties: ... };
原型对象用途就是为每个实例对象存储共享的方法和属性,所有的实例共享一个原型对象
函数的原型对象constructor默认指向函数本身,原型对象除了有原型属性外,为了实现继承,还有一个原型链指针__proto__,该指针指向上一层的原型对象,而上一层的原型对象的结构依然类似,这样利用__proto__一直指向Object的原型对象上,而Object的原型对象用Object.prototype.__proto__ = null表示原型链的最顶端,如此变形成了javascript的原型链继承,同时也解释了为什么所有的javascript对象都具有Object的基本方法。作者:Pursue链接:http://www.jianshu.com/p/aa1ebfdad661/來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在js中,对象在调用一个方法时,会首先在自身寻找是否由该方法,如果没有,则在原型链上寻找,这个原型链就是实例对象的_proto_属性。
对于实例person而言,其内部有一个原型链指针proto,该指针指向了Person.prototype指向的对象
阅读全文
0 0
- JS原型、原型链
- JS-原型、原型链
- JS原型,原型链
- js原型,原型链
- JS原型+原型链
- JS原型和原型链
- JS原型和原型链
- JS原型和原型链
- JS原型和原型链
- js 原型和原型链
- JS 原型与原型链
- JS原型和原型链
- js原型与原型链
- JS原型与原型链
- JS:原型、原型链、继承
- js原型和原型链
- JS原型及原型链
- js---原型与原型链
- 29、Selenium + Python 实现 UI 自动化测试-正片1
- Mysql Group Replication 简介及单主模式组复制配置
- 如何从android应用向MYsql服务器发送数据?
- 100:0!Deepmind Nature论文揭示最强AlphaGo Zero,无需人类知识
- Excel栏目选择
- js原型链
- Building workspace has encountered a problem
- Gradle——构建springboot
- javawebday16(响应头 )
- JDK目录和Java三大平台
- Linux学习——环境变量设置
- sqlserver查询出某个表当前自增字段的最新值
- Impala创建/显示表信息
- SpringMVC 基础教程 简单入门实例