当前位置: 传客网 > JavaScript之Prototype学习

JavaScript之Prototype学习

2017-01-10 作者:心儿落了

一、改变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

  • JavaScript学习总结(十四)——JavaScript编写类的扩展方法

    JavaScript学习总结(十四)——JavaScript编写类的扩展方法  在​J​a​v​a​S​c​r​i​p​

  • JavaScript学习总结

    由于以前JavaScript用的比较的少,所以对JavaScript的认识非常的肤浅,这周看了蛮多关于javascript的书和文档,对JavaScript终于有了一些初步的认识,总结一下,希望懂JavaScript的高手多多指点。1、Ja

  • 学习Javascript闭包(Closure)

    作者:阮一峰闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascri

  • 精通JavaScript+jQuery 学习笔记(-)

    最近在重新学习jquery和js,精通这本书还算不错吧,如果朋友没有实例可以留邮箱,可以无私共享下~总结性的说下,这本书讲的语法基本,都配有详细的实例,实例上的备注也挺详细的。重点是用js的思路,练习jquery,本人抱的就是这个目的。嗯,

  • 开始学习JavaScript

    今天开始学习JavaScript,为了能坚持我打算写blog。希望能学好JavaScript。

  • JavaScript学习总结(十)——this关键字

    JavaScript学习总结(十)——this关键字1《scripttype="text/javascript"》2functionPerson(){34varQQ="123456";5varEmail="123456@qq.com";67

  • 传智播客--JavaScript学习总结

    今天牛老师带我们学习了JavaScript(以下简称JS),下面我来总结下今天的知识要点。JS是一门弱类型的语言,比如:vari=1;i="张三";这种代码在C#中是无法运行的。而在JS中却能成功运行,这就是弱类型的语言。JS是大小写敏感的

  • JavaScript学习笔记之一:JavaScript立即执行函数及其典型应用场景分析

    No.1楔子学习过开源JavaScript类工程(如基于jQuery的Web工程)的Web人员,相信对以下表达式并不陌生:(function(args){...}(someArgs));或(function(args){...})(some

返回
顶部