• js关于propotype的一些事-------Day62


    近期在忙着搬家,忙忙活活的收拾这收拾那,原以为自己东西了了,谁知道东西是越收拾越多,各种崩溃啊.....

    昨日在记录js动态生成表格的经典方式时,用到了createDocumentFragment(),还感觉自己又学到了新东西,结果回头看过去记录的时候,惊奇的发现自己原来在非常早的时候就记录过一次了,好悲哀,仿佛又回到了那个“好脑子不如烂笔头”的年代,看来烂笔头也还得要多翻看啊。

    在这个应用中还用到了一个经典的“propotype”,这里来记录下:

    1、propotype的概念

    在w3cshool中,这样来解释的:propotype属性使你有能力向对象加入属性和方法。

    另一些介绍这样来描写叙述:如今有一个类A,我想要创建一个类B,这个类是以A为原型的,而且能进行扩展,则我们称B的原型为A;

    在了解一些相关知识后,我们回过头来看w3cshool中的解释,确然是言简意赅,合适至极,尽管在初始的时候让我纠结了半天;

    2、propotype的定义

    在进行这个问题的时候先来记录下javascript的方法类型:

    a、类方法

    function createTable(){
     this.tableRowNum=10;
     this.show=function(){
         alert(1);
     };
    };

    b、对象方法

    createTable.introduce=function(){
    alert("这是个表格");
    };

    c、原型方法

    createTable.propotype.introduce=function(){
    alert("这又是一个表格");
    }
    在这里我们先介绍了javascript的这三种方法,目的就是为了能够看得更明确一些,第三个方法是原型方法,也就是我们所说的原型的定义,其实,广义的来说我们所说的原型定义还是属于对象定义的范畴,createTable.propotype看做一个对象的话,并且其实也确实是一个对象,这个我们能够写方法进行证明:function a(){},alert(a.propotype);

    我们再来回顾一个对象的定义在java中通常是怎样定义的,定义其属性和方法,createTable是一个对象,它有它的方法,而createTable.propotype能够看做为一个对象的话,则就是它的属性,而原型就是对它属性的方法,而通过改变它的属性相同能够改变原始对象,这是显而易见的。

    这样应该可以能简单的理解下原型方法是怎样定义了吧。

    3、propotype的应用

    a、给propotype加入属性

    这个相比較来说比較简单,像:

    function book(){
    this.bookPage=10;
    }
    book.propotype.add=function{
    this.bookName="加油";
    }
    通过上面的定义我们知道,改变它的属性的方法,则相同会改变对象本身,假设生成一个实例的话,则这里就会含有两个属性了,bookPage和bookName;

    b、用propotype给对象加入函数

    这个在生成表格中就应用到了,像加入行和列;事实上对对象属性加入的方法,仍然是对原对象进行加入

    4、个人的一些总结(可能会有偏颇,希望能够给指正)

    通过应用中我们能够得出,我们对于对象原型的定义,实际上就是对原对象加入了一个给定名称的属性或者方法,而我们之所以把它单独拿出来,是避免反复生成同样的内容,效率上的问题,再有就是可能多个对象拥有共同的属性,这让我们想起了继承的定义,父类的存在不就是为此存在的么,可是有人给出了一个更好的称呼:克隆,它毕竟还不是继承,由于A的原型为B的同一时候,B的原型还能够同一时候是A,这在继承中是不存在的,所以被称作克隆

    5、小细节

    当方法中存在某一属性,而其原型方法中也存在此属性时,原对象的方法的优先级是要高于原型方法的。


    稀稀拉拉写了不少,可是还感觉有些乱,感觉上隐约有些似懂非懂,用语言把它描绘清楚了有些难度当前来看,但这却是是当前的理解,希望随着经验的添加,理解不断加深吧....



  • 相关阅读:
    JavaScript 焦点事件
    在虚拟机里面运行java程序
    CentOS 7 命令
    修改和删除
    查询语句,查询指定的字段,带条件查询,排序查询
    Redis系列之-缓存的使用和优化
    Redis系列之-Redis-Sentinel
    Redis系列之主从复制原理与优化
    Redis系列之-使用常见问题
    Redis系列之-持久化
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4072883.html
Copyright © 2020-2023  润新知