js中的原型与原型链的一点理解
来源:互联网 发布:java线程的同步问题 编辑:程序博客网 时间:2024/05/26 15:58
凡是通过new Function() 创建的对象都是函数对象,其他的都是普通对象
在js中,每当定义一个对象时,对象都会包含一些预定义的属性。其中,函数对象的一个属性就是原型对象prototype。注意:普通对象没有prototype,但有__proto__属性
function f1(){};console.log(f1.prototype); // f1{}/*由上文可以看出,f1.prototype就是f1的一个实例对象。就是在f1创建的时候,创建了一个它的实例对象并复制给它的prototype,基本过程如下:var tmp = new f1();f1.prototype = tmp;*/console.log(typeof f1.prototype);// Objectconsole.log(typeof Function.prototype);// Function ,这个最特殊console.log(typeof Object.proptype); // Objectconsole.log(typeof Function.prototype.prototype); // undefined
原型对象用来做什么呢?主要作用是用于继承
var Person = function (name){ this.name = name;}Person.prototype.getName = function(){ return this.name;}var zhagnshan = new Person('zhangshan');console.log(zhangshan.getName()):// zhangshan
原型链
JS 在创建对象的时候,都有一个叫做__ptoto__的内置属性,用于指向创建它的函数对象prototype。以上面的例子为例:
console.log(zhangshan.__prototype__ === Person.prototype);// true// Person.prototype 对象也有__proto__属性,它指向创建它的函数对象(Object)的prototypeconsole.log(person.prototype.__proto__ == Object.prototype);// true// Object.prototype 对象也有__ptoto__ 属性,但它比较特殊,为nullconsole.log(Object.prototype.__proto__);// null// 这个由__proto__串起来的直到Object.prototype.__proto__为null 的链叫做原型链![](~/11-05-24.jpg)// 栗子// prototype 就是函数自身的一个实例对象// __proto__ 指向创建它的(即父亲的)函数对象prototype ,即父亲函数对象的一个实例对象var animal = function (){};var dog = function(){};animal.price = 2000;// dog 的实例对象将具有animal 的一切属性// dog.__proto__ = Function.prototype;// dog.prototype = new Function();dog.prototype = animal;// dog.__proto__ = Function.prototype;// dog.prototype = animal;var tidy = new dog();// tidy.__proto__ = dog.prototype = animal;// dog.price = dog.__proto__.price = Function.prototype.price = undefined;// tidy.price = tidy.__proto__.price = dog.prototype.price = animal.price;console.log(animal);console.log(dog.prototype);console.log(dog.price,dog.__proto__.price);console.log(tidy.price,tidy.__proto__.price,dog.prototype.price,animal.price);
0 0
- js中的原型与原型链的一点理解
- js原型与原型链的理解
- JS中的原型及原型链的一点总结
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 深入理解js原型与原型链
- 理解js中的原型链
- 理解js中的原型链
- 理解js中的原型链
- RPi-001 起点
- Android练手——分贝计
- Spring容器启动的第二阶段
- spring---mobile模块
- 推荐算法:基于领域的协同滤波
- js中的原型与原型链的一点理解
- Cisco SG200配置备忘
- Steve Lin:如何撰写一篇优秀的SIGGRAPH论文
- [Android] 消息处理机制
- Oracle12c下pdborcl消失了,重新插入pdborcl
- UIViewController 调用顺序
- ROS的优势与不足(除了ROS 机器人自主定位导航还能怎么做?)
- 潘天佑博士2014微软学生夏令营演讲:如何培养领导力
- 直接插入排序