大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 网页设计 -> 经验技巧 -> 用 prototype 定义自己的方法

用 prototype 定义自己的方法

时间: 2021-07-31 作者:daque

正文是自己经过部分领会所写成的,没有参照任何材料,如有好像,纯属偶然,同声,即使您要援用正文笔墨,请证明 — 作家:windy_sk;email:seasonx@163.net,感谢!正文进经过范例,报告经过 prototype 自设置本领的进程,旨在举一反三,即使不对的场合,欢送教正!prototype 是在 ie 4 及其此后本子引入的一个对准于某一类的东西的本领,并且特出的场合便在乎:它是一个给类的东西增添本领的本领!这一点大概听起来会有点乱,别急,底下我便经过范例对这一特出的本领作已下解说:开始,咱们要先领会一下类的观念,javascript 自己是一种面向东西的谈话,它所波及的元素按照其属性的各别都附丽于某一个一定的类。咱们所罕见的类囊括:数组变量(array)、论理变量(boolean)、日子变量(date)、构造变量(function)、数值变量(number)、东西变量(object)、字符串变量(string) 等,而关系的类的本领,也是步调员常常用到的(在这边要辨别一下类的提防和属性发本领),比方数组的push本领、日子的get系列本领、字符串的split本领之类,然而在本质的编制程序进程中不领会有没有发觉到现有本领的不及?prototype 本领应运而生!底下,将经过范例由浅入深解说 prototype 的简直运用本领:1、最大略的例子,领会 prototype:(1) number.add(num):效率,数字相加实行本领:number.prototype.add = function(num){return(this+num);}考查:alert((3).add(15)) -> 表露 18(2) boolean.rev(): 效率,布尔变量取反实行本领:boolean.prototype.rev = function(){return(!this);}考查:alert((true).rev()) -> 表露 false是否很大略?这一节只是是报告读者群又这么一种本领,这种本领是如许应用的。2、已有本领的实行和巩固,初识 prototype:(1) array.push(new_element)效率:在数组结束介入一个新的元素实行本领:array.prototype.push = function(new_element){        this[this.length]=new_element;        return this.length;    }让咱们进一步来巩固他,让他不妨一次减少多个元素!实行本领:array.prototype.pushpro = function() {        var currentlength = this.length;        for (var i = 0; i < arguments.length; i++) {            this[currentlength + i] = arguments[i];        }        return this.length;    }该当不丑陋懂吧?以该类推,你不妨商量一下怎样经过巩固 array.pop 来实行简略大肆场所,大肆多个元素(简直代码就不复细说了)(2) string.length效率:这本质上是 string 类的一个属性,然而因为 javascript 将全角、半角均视为是一个字符,在少许本质应用中大概会形成确定的题目,此刻咱们经过 prototype 来填补这部不及。实行本领:string.prototype.tlength = function(){        var arr=this.match(/[^\x00-\xff]/ig);        return this.length+(arr==null?0:arr.length);    }考查:alert("aa啦啦aa".tlength()) -> 表露 8这边用到了少许正则表白式的本领和全角字符的源代码道理,因为属于另两个比拟大的类型,正文不加证明,请参考关系资料。3、新功效的实行,深刻 prototype:在本质编制程序中所用到的确定不不过已有本领的巩固,更多的举行的功效的诉求,底下我就举两个用 prototype 处置本质题目的例子:(1) string.left()题目:用过 vb 的该当都领会left因变量,从字符串左边取 n 个字符,然而不及是将全角、半角均视为是一个字符,形成在中英文混排的版面中不许截取等长的字符串效率:从字符串左边截取 n 个字符,并扶助全角半角字符的辨别实行本领:string.prototype.left = function(num,mode){        if(!/\d+/.test(num))return(this);        var str = this.substr(0,num);        if(!mode) return str;        var n = str.tlength() - str.length;        num = num - parseint(n/2);        return this.substr(0,num);    }考查:alert("aa啦啦aa".left(4)) -> 表露 aa啦啦     alert("aa啦啦aa".left(4,true)) -> 表露 aa啦本本领用到了上头所提到的string.tlength()本领,自设置本领之间也能拉拢出少许不错的新本领呀!(2) date.daydiff()效率:计划出两个日子型变量的间隙功夫(年、月、日、周)实行本领:date.prototype.daydiff = function(cdate,mode){        try{            cdate.getyear();        }catch(e){            return(0);        }        var base =60*60*24*1000;        var result = math.abs(this - cdate);        switch(mode){            case "y":                result/=base*365;                break;            case "m":                result/=base*365/12;                break;            case "w":                result/=base*7;                break;            default:                result/=base;                break;        }        return(math.floor(result));    }考查:alert((new date()).daydiff((new date(2002,0,1)))) -> 表露 329     alert((new date()).daydiff((new date(2002,0,1)),"m")) -> 表露 10固然,也不妨进一步夸大,得出相应的钟点、秒钟,以至是秒。(3) number.fact()效率:某一数字的阶乘实行本领:number.prototype.fact=function(){        var num = math.floor(this);        if(num<0)return nan;        if(num==0 num==1)            return 1;        else            return (num*(num-1).fact());    }考查:alert((4).fact()) -> 表露 24这个本领主假如说领会递归的本领在 prototype 本领中也是可行的!

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.