JS原型学习笔记
2015-05-02 11:19
267 查看
JS原型
在JS中任何一个对象都有一个prototype原型。prototype原型也有个原型,为Object.prototype指向null.可通过编继续声明同样的属性和或方法重写原型,即覆盖原先的,不过得放在后面。
function foo(){} foo.prototype.z=3; var obj = new foo(); obj.x = 1; obj.y = 2; obj.x; //1 obj.y; //2 obj.z; //3 typeof obj.toString; //'function' 'z' in obj; //true obj.hasOwnProperty('z'); //false
如图:
原型链
属性查找
当查找对象的一个属性时,Javascript会向上遍历原型链,直到找到给定的属性名为止,如查找到原型链顶部Object.prototype,仍然没有找到指定的属性,则返回underfiend.obj.z = 5; obj.hasOwnProperty('z'); //true foo.prototype.z; //still 3 obj.z = 5; obj.z = underfined; obj.z; //underfined delete obj.z; //true obj.z = 3; delete obj.z; //true obj.z = 3; //still 3 !!!
function Foo() { this.value = 21; } Foo.prototype = { method : function() {} }; function bar() {} //设置bar的prototype为Foo的实例 bar.prototype = new Foo(); bar.prototype.foo = 'Hello World'; //修改bar.prototype.constructor为bar本身 !!! bar.prototype.constructor = bar; var test = new bar(); alert(test.constructor); //function bar(){}
test对象从bar.prototype和Foo.prototype继承下来,可以访问方法method和属性value. new bar()不会新创建新的foo实例,而是重复使用它原型上的那个实例。bar的所有实例都会共享value属.
参考资料:
强大的原型和原型链
相关文章推荐
- JS 学习笔记--13---原型
- 韩顺平 javascript教学视频_学习笔记12_js面向对象编程介绍_类(原型对象)和对象
- JavaScript高级程序设计(第2版) 学习笔记:(三)js原型的四种形态
- JavaScript高级程序设计(第2版) 学习笔记:(六)js基于构造函数与原型的继承
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
- js学习笔记 理解原型对象
- 【学习笔记】JS基于原型的面向对象
- 2016.06.15廖雪峰JS__学习笔记(原型继承)__P9
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第29讲_二维数组转置_js面向对象编程介绍 类(原型对象)和对象_学习笔记_源代码图解_PPT文档整理
- HTML5学习笔记(十六):原型、类和继承【JS核心知识点】
- [js学习笔记] 原型链理解
- JS学习笔记02-初识原型
- JS原型学习笔记
- JS原型学习笔记
- 【09-23】js原型继承学习笔记
- 【JS学习笔记】 面向对象与原型
- jQuery学习笔记(一) 原生js写法
- js学习笔记 -运动框架(一)
- Angular.js学习笔记(二)
- [js学习笔记]PDF.js专题