js原型与原型链总结
原型是什么,用翻译翻译过来就是prototype。讲原型的时候我们可以先补充几点其他知识点,这样可以方便我们理解prototype。
补充一:我们得先知道,引用类型(数组,对象,函数),他们都是具有对象的可拓展属性(可以百度理解)。比如,foo是个对象,foo.a=1,可以扩展一个a属性。
补充二:我们得先说说构造函数。其实所有引用类型都有构造函数。
var a = {}; 它还有这样的写法,var a = new Object();Object是a的构造函数
var b = [] ;它还有这样的写法, var b =new Array(); Array是b的构造函数
function Foo(){},它还有这样的写法var Foo = new Funcrion(){},Foo的构造函数是Function
我们可以使用instanceof来判断一个函数是否是一个变量的构造函数。是的话返回true,否则返回false。
第三:所有的引用类型(函数,数组,对象)是都是对象。那么是对象,就具有对象的可拓展特性。对象本身就带有一个属性,叫做__proto__属性,他也叫做隐式原型。
当我们想要得到某个对象的属性值时,如果这个对象没有这个属性,那么我们就需要去这个对象的隐式原型_proto_上面去找。如果还找不到的话,我们就需要去构造函数的隐式原型去找,如果还找不到,那么就会在这里停止寻找了。
例如:
var Foo = new Function(){},
var fn = new Foo()
fn.toString();
fn想用toString()属性,他首先会在fn.proto 去寻找 (fn.proto === Foo.prototype),如果还没找到,他就会到fn.proto.__proto__里卖去找,fn.proto.__proto__也等于Object.prototype里面去寻找,结果找到了。
- 点赞
- 收藏
- 分享
- 文章举报
- JS 面向对象编程、原型链、原型继承(个人学习总结)
- js总结-原型
- js拖拽的原型声明和用法总结
- cvte前端笔试后的js原型总结
- js原型和原型链总结
- 一句话总结JS构造函数、原型和实例的关系
- JS 原型链学习总结
- JS中的原型及原型链的一点总结
- 【js基础】javascript中的原型总结
- js中几种方法的总结。(实例方法、类方法、原型方法)
- js原型、constructor、继承总结
- JS中的原型及原型链的一点总结
- js 原型总结
- JS高级原型阶段知识总结
- 前端总结·基础篇·JS(一)原型、原型链、构造函数和字符串(String)
- js面向原型话语言总结
- JavaScript学习总结三:js基于原型面向对象
- js 原型和call()总结
- js的原型总结
- JavaScript学习总结三:js基于原型面向对象