javascript代码实例教程-JavaSript之prototype属性

发布时间:2019-02-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaSript之prototype属性脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 最近在JavaSript进行Array操作的时候发现没有删除节点的方法,而我要实现的效果需要不断调用删除节点的方法,查找了相关资料发现可以利用PRototyPE属性给Array增加删除节点的方法,并且该方法同Array自身拥有的push()、pop()、reverse()、slice()、sort()、join()等方法一样使用。

 

代码1

[javascript]  

Array.prototype.remove = function (dx) {  

        if (isNaN(dx) || dx > this.length) { return false; }  

        for (VAR i = 0, n = 0; i < this.length; i++) {  

            if (this[i] != this[dx]) {  

                this[n++] = this[i]  

            }  

        }  

        this.length -= 1  

    }  

 

测试该方法

代码2

[javascript] 

$(function () { var arr = [1, 2, 3];  

       arr.remove(1);  

       var s=&#39;';  

       for(var i=0;i<arr.length;i++){  

           s = s + arr[i]+',';  

       }  

       alert(s.substring(0,s.length-1));  

   });  

 

数组是从0开始编号,因此删除的元素是“2”,输出的结果为“1,3”,正确。

w3school给的解释是:prototype使您有能力给对象添加属性和方法。由于JavaSript没有类的概念,因此也无法向面向对象语言一样有继承。prototype正是为了解决此问题,为开发者打开了一扇门,通过这扇门,开发者可以在对象上定义属性和方法,然后在初始化一个变量,例如数组,那么该数组就具有了对新定义的属性和方法的一个引用(可以将其理解为是对Array对象新定义属性和方法的“继承”)。有的人会将“代码1”中的代码理解为是赋值,这是极其不准确的。如果是赋值,那么将会指向内存中同一块区域,当时当我们如果在“代码2”中再初始化一个数组的话,数组1和数组2分别调用remove()方法,将不会受到影响。

 

下面在Date对象实现了Format()方法,这个平时也用得比较多。

 

[javascript]  

   // Date对象上实现Format方法,将 Date 转化为指定格式的String  

   // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,   

   // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)   

   // 使用方法:   

   // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") -> 2014-04-16 10:12:30.526  

   // (new Date()).Format("yyyy-M-d h:m:s.S")      -> 2014-4-16 7:6:9.25  

Date.prototype.Format = function (fmt) {  

       var o = {  

           ";m+": this.getMonth() + 1, //月份   

           "d+": this.getDate(), //日   

           "h+": this.getHours(), //小时   

           "m+": this.getMinutes(), //分   

           "s+": this.getSeconds(), //秒   

           "q+": Math.floor((this.getMonth() + 3) / 3), //季度   

           "S": this.getMilliseconds() //毫秒   

       };  

       // RegExp.$1 返回匹配的第一个字符串(以括号为标识)  

       if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  

       for (var k in o) {  

           if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  

       }  

       return fmt;  

   }  

 

在这个例子中有一个正则表达式的应用,RegExp.$1可以返回第一个匹配的字符串,下面用一个例子来说明问题。

[javascript]  

$(function () {  

       var r = /^(/d{4})-(/d{1,2})-(/d{1,2})$/;  

        r.exec('1988-01-10');  

        s1 = RegExp.$1;  

        s2 = RegExp.$2;  

        s3 = RegExp.$3;  

        alert(s1 + "," + s2 + "," + s3)   

});  

 

返回的结果:1988,01,10

本文主要是对JavaSript的prototype属性使用心得进行总结,程序开发中太多时候我们习惯了“.”这个操作符,通过该操作符来引出对象内置的属性和方法,然而有的时候并非如我们期望的那样别人啥事都为我们准备好了,prototype属性让我们能在对象上自定义方法和属性。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JavaSript之prototype属性全部内容,希望文章能够帮你解决javascript代码实例教程-JavaSript之prototype属性所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。