博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JS实践】JS小工具代码片段
阅读量:6963 次
发布时间:2019-06-27

本文共 5722 字,大约阅读时间需要 19 分钟。

  hot3.png

JS小工具代码片段:

1、JS 实现对象属性的get 和set方法

    说明:

    下面方法1,经测试,在safari和chrome、ff、ie9中,弹出值均为 [object object]被赋值|被获取,即没有实现。

    方法2,只有ie9报错,提示:对象不支持“__defineGetter__”属性或方法。

    如果不添加get和set方法,也能通过赋值语句改变new的object的属性值。结论:没事别瞎用。

/*1.自定义用户类  name:用户名称,age:年龄*/    function User(name,age){        this.Name=name;        this.Age =age;    }//    /*2.为Age 属性添加get和set方法,【方法1】*///    User.prototype = {//        get Age(){//            return this._Age;//        },//        set Age(age){//            this._Age = age;//            ShowSetInfo(this);//        }//    };    /*2.为Age属性添加get和set方法,【方法2】*/    User.prototype.__defineGetter__("Age", function () {        ShowGetInfo("Age");        return this._Age;    });    User.prototype.__defineSetter__("Age", function (val) {        this._Age = val;        ShowSetInfo("Age");    });     /*3.进行属性的赋值与获取测试*/    var newuser = new User("markeluo",23);    newuser.Age=15;    var agevalue= newuser.Age;     function ShowSetInfo(_obj){        alert(_obj.toString()+"被赋值!")    }    function ShowGetInfo(_obj){        alert(_obj.toString()+"被获取!")    }

2、随机打乱指定数组

    参考文章:http://home.dingxing.cn/blog-8-697.html

    (国外大牛的神写法)

function randomsort(a, b) {        return Math.random()>.5 ? -1 : 1;//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1}var arr = [1, 2, 3, 4, 5];arr.sort(randomsort);

    延伸阅读:

    这里介绍下sort()函数,在JS中Array对象里内置了一个函数:arrayobj.sort([sortfunction])

    此方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

    sortFunction为可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。 

    sortFunction方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

    我们可以对上面的randomsort()稍作修改,来实现升序排列和降序排列:

function asc(a,b) { return a < b ? -1 : 1;//如果a
 b ? -1 : 1;;//如果a>b不交换,否则交换,即将序排列}

    另外,可以直接把一个无名函数直接放到sort()方法的调用中。如下的例子是将奇数排在前面,偶数排在后面,例子如下:

    以下是引用片段:

var arrA = [6,2,4,3,5,1]; arrA.sort( function(x, y) { if (x % 2 ==0) return 1; if (x % 2 !=0) return -1; }); document.writeln(arrA); //输出:3,5,1,4,2,6

3、JS判断浏览器类型与版本

    判断浏览器版本的简单范例:

function getOs()  {     var OsObject = "";     if(navigator.userAgent.indexOf("MSIE")>0)        return "MSIE";     if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)        return "Firefox";     if(isSafari=navigator.userAgent.indexOf("Safari")>0)        return "Safari";     if(isCamino=navigator.userAgent.indexOf("Camino")>0)        return "Camino";     if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0)        return "Gecko";  }  alert("您的浏览器类型为:"+getOs());

    下面列举一下常用的判断方法 

    1、判断浏览器是否为IE 

document.all ? 'IE' : 'others':在IE下document.all值为1,而其他浏览器下的值为0;navigator.userAgent.indexOf("MSIE")>0 ? 'IE' : 'others':navigator.userAgent是描述用户代理信息。navigator.appName.indexOf("Microsoft") != -1 ? 'IE' : 'others':navigator.appName描述浏览器名称信息。

    2、判断IE版本 

navigator.appVersion.match(/6./i)=="6." ? 'IE6' : 'other version'; //在已知是IE浏览器的情况下,可以通过此方法判断是否是IE6;navigator.userAgent.indexOf("MSIE 6.0")>0 ? 'IE7' : 'other version'; //同上;navigator.appVersion.match(/7./i)=="7." ? 'IE7' : 'other version'; //在已知是IE浏览器的情况下,可以通过此方法判断是否是IE7;navigator.userAgent.indexOf("MSIE 7.0")>0 ? 'IE7' : 'other version'; //同上;navigator.appVersion.match(/8./i)=="8." ? 'IE8' : 'other version'; //在已知是IE浏览器的情况下,可以通过此方法判断是否是IE8;navigator.userAgent.indexOf("MSIE 8.0")>0 ? 'IE8' : 'other version'; //同上。

    3、JS获取浏览器信息 

  • 浏览器代码名称:navigator.appCodeName

  • 浏览器名称:navigator.appName

  • 浏览器版本号:navigator.appVersion

  • 对Java的支持:navigator.javaEnabled()

  • MIME类型(数组):navigator.mimeTypes

  • 系统平台:navigator.platform

  • 插件(数组):navigator.plugins

  • 用户代理:navigator.userAgent

    4、Navigator.userAgent 知多少?(看清楚,Chrome这货里面有“Safari”字符串

  • // 以下值分别为在对应浏览器开发者控制台打印的 Navigator.userAgent 的值

  • IE6:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

  • IE7:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)

  • IE8:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)

  • IE9:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

  • IE10:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

  • IE11:Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko

  • chrome:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36 

  • Safari:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/7.0.1 Safari/537.73.11

  • 360安全浏览器6.2: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1

    5、$.browser

    jQuery 1.9 以前版本,可以直接用 $.browser 获取浏览器信息,但是,1.9以后将由插件 jQuery.migrate 提供功能支持。()。

    但是2.0及以后,将不再支持 IE 6/7/8,如果要使用上述方法,必须使用 IE 的条件注释。如 6 所示。

  结果:Object {

webkit: true, version: "537.36", safari: true}

    6、关于IE的条件注释说明

    IE10+以后,将不再支持条件注释写法。官方文档:(

Item Example Comment
! [if !IE] The NOT operator. This is placed immediately in front of the featureoperator, or subexpression to reverse the Boolean meaning of the expression.
lt [if lt IE 5.5] The less-than operator. Returns true if the first argument is less than the second argument.
lte [if lte IE 6] The less-than or equal operator. Returns true if the first argument is less than or equal to the second argument.
gt [if gt IE 5] The greater-than operator. Returns true if the first argument is greater than the second argument.
gte [if gte IE 7] The greater-than or equal operator. Returns true if the first argument is greater than or equal to the second argument.
( ) [if !(IE 7)] Subexpression operators. Used in conjunction with Boolean operators to create more complex expressions.
& [if (gt IE 5)&(lt IE 7)] The AND operator. Returns true if all subexpressions evaluate to true
| [if (IE 6)|(IE 7)] The OR operator. Returns true if any of the subexpressions evaluates to true.

    范例:

转载于:https://my.oschina.net/maomi/blog/197930

你可能感兴趣的文章
UI2Code智能生成Flutter代码——机器生成代码
查看>>
Node.js 应用故障排查手册 —— 类死循环导致进程阻塞
查看>>
Discord 公司如何使用 Cassandra 存储上亿条线上数据
查看>>
mysql8.0 二进制安装
查看>>
内存问题导致机器无法正常开机
查看>>
centos的samba共享配置
查看>>
Netty入门-client/server
查看>>
PHP推荐禁用函数disable_functions PHP安全配置
查看>>
Webit Script 入住 OSC
查看>>
java8 学习记录
查看>>
C++中free与delete的区别
查看>>
struts2笔记(7)-----Struts2的拦截器分析
查看>>
Hadoop-ha 集群搭建
查看>>
tomcat7服务器多个虚拟目录分别绑定各自域名
查看>>
install python
查看>>
根据模板导出EXCEL
查看>>
学习笔记-小甲鱼Python3学习第三十讲:文件系统:介绍一个高大上的东西
查看>>
SQL Server常见错误。
查看>>
大B与小b
查看>>
关于linux挂载windows文件时linux报错问题解决方法
查看>>