JavaScript之Prototype学习

一、改变prototype
1、当改添加或改变原有的prototype属性时,会影响到所有原型链上的属性。
Student.prototype.x = 101;
bosn.x;   // 101
2、当存在原型链时,如果对原型链进行修改,不会影响本级和上级原型链的属性,但是会影响new出来的子级原型链。
Student.prototype = {y:2};
bosn.y; // undefined  本级无影响
bosn.x; // 101
var nunnly = new Student('Nunnly', 3, 'Class LOL KengB');
nunnly.x; //undefined  影响子级
nunnly.y // 2

二、内置构造器的prototype
Object.prototype.x = 1;
var obj = {}
obj.x; // 1
for (var key in obj){
    console.log('result:' + key);  //会把x遍历出来
}
可以改造出来:
Object.defineProperty(Object.prototype, 'x', {writeable: true, value: 1});
var obj = {}
obj.x; // 1
for (var key in obj){
    console.log('result:', key);
}

三、创建对象-new原型链
function fun(){}
foo.prototype.z = 3
var obj = new foo();
obj.y = 2;
obj.x = 1;

obj.x; // 1
obj.y; // 2
obj.z;  // 3
typeof obj.toString // 'function'
'z' in obj; // true
obj.hasOwnProperty('z')   //false

四、instanceof原理
它通过右边的原型的属性是否出现在左边原型链上。

五、实现继承的方式
function Person(){}
function Student(){}
Student.prototype = Person.prototype; // 1 会影响来Person的原型链
Student.prototype = new Person();     // 2 调用了Person的构造函数,也创建了实例,但是我们只是申明Student的原型
Student.prototype = Object.create(Person.prototype);  // 3 Object.create是在ES5之后才有的方法
Student.prototype.constructor = Person;               //

正确方法(兼容ES5)
if (!Object.create){
    Object.create = function(proto){
        function F(){};
        F.prototype = proto;
        return new F;
    };
}


相关推荐

  • JavaScript学习笔记六:prototype的提出 JavaScript学习笔记六:prototype的提出本系列文章导航JavaScript学习笔记一——数据类型JavaScript学习笔记二——函数JavaScript学习笔记三——作用域JavaScript学习笔记四——Eval函数Ja
  • JavaScript中的prototype(学习笔记) 首先,Javascript中每个对象都有prototype属性,他是用来返回对象类型原型的引用的。我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会"继承"赋予该对象原型的操作。但是这个prototype到底是怎么
  • 坏狼javascript学习! 1.学习简单的输出!<scripttype="text/javascript">document.write("HelloWorld!");</script>2.防止不支持js的浏览器显示出来!<scriptt
  • Javascript学习笔记2-自定义对象 对象是javascript的一种数据类型,是一种复合值,包含了许多属性,而每个属性都是一个键值对,我们可以对javascript对象的属性进行操作。JavaScript对象的属性包括名字和值,属性名可以是包含空字符串在内的任意字符,但不能存
  • Prototype`s Class&Object--Ajax学习历程之Prototype(3-3) (4)ObjectRangeObjectRange对象是Prototype库提供的一个自定义类,一个ObjectRange对象代表一个范围。我们来看一下文档:Rangesrepresentanintervalofvalues.Thevalu
  • JavaScript学习心得 5月23日 学习JavaScript快一个月了,我就现在的学习现状,做一个总结。1、学习的教材:《JavaScript高级程序设计》(作者:[美]NicholasC.Zakas著;李松峰曹力译)。2、学习方式:抄袭。。。除了抄袭还是抄袭,一是抄袭书上内
  • 学习JavaScript的经验之谈 看看别人是如何学习javascript,其实跟我之前写过《我是如何学习JavaScript》一文相似,就是阅读,写代码,看别人的代码,反复学习和练习。当然有时候你会感到很吃力,毕竟要学好一门语言也是一件挑战,就看你是否能够坚持下来,成为一个
  • JavaScript学习总结(六)——JavaScript判断数据类型总结 JavaScript学习总结(六)——JavaScript判断数据类型总结  最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧!一、JS中的数据类型  1
  • JavaScript学习总结(十六)——Javascript闭包(Closure) JavaScript学习总结(十六)——Javascript闭包(Closure)  闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。很早就接触过闭包这个概念了,但是一直糊里糊涂的,没
  • JavaScript学习总结(十三)——极简主义法编写JavaScript类 JavaScript学习总结(十三)——极简主义法编写JavaScript类  前两天在网上无意中发现了一篇使用极简主义法定义JavaScript类的文章,原文链接,这个所谓的"极简主义法"我还是第一次听说,是荷兰程序员GabordeMoo
  • 如何系统地学习JavaScript 入门学会DIV+CSS布局使用DIV+CSS布局标准网页,可以使前端XHTML代码更少、结构更清晰,这有利于轻松用JavaScript操作DOM,比如,要展示一个3行3列的列表,如果用传统的表格布局,现在要你用JavaScript动态生成这
  • 关于课程CSS+JavaScript学习心得 学习这门课程已经有5周了,总的来说CSS的内容基本掌握,运用的比较熟练。上周开始我们就着重开始学习JavaScript了。虽然看起来比CSS要简单的多,但有些语句就是执行不了,弄得我心情很沮丧。主要的问题是下面的语句:<bodyonl

你的评论

就没有什么想说的吗?

最新博客

关于我们 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X