js+jquery常用知识点汇总(3)


/**
    检查数组中是否存在传入的值,如果存在就返回值所在的位置,如果不存在就返回-1。
    *elem 规定需检索的值。
    *arr 数组
    *i 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 arr.length - 1。如省略该参数,则将从数组首元素开始检索。
    */
function inArray(elem, arr, i){
    var len;
    if (arr) {
        //如果浏览器支持Array拥有indexOf方法
        if ([].indexOf) {
            return [].indexOf.call(arr, elem, i);
        }
        len = arr.length;
         //当i为负数的时候,从数组后边len+i的位置开始索引
         //理解这个分成两个部分i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0;,i=i为true,执行(i < 0 ? Math.max(0, len + i) : i),反正执行i=0
        i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
        for (; i < len; i++) {
            // 双重检测防止类似这样的数组 ar = [];ar[1]=1;ar[0] = undefined; 0 in ar =false;a[0]===undefined;
            // 0 in arr  => arr[0]是否存在  'nme' in arr => arr['nme']是否存在
            if (i in arr && arr[i] === elem) {
                return i;
            }
        }
    }
    return -1;
}

二、javascript中原型链常见的知识点

  1.hasOwnProperty()方法

   使用hasOwnProperty()方法可以检测一个属性是存在与实例,还是存在于原型中。这个方法从Object继承,只在给定属性存在于对象实例中时,才会返回true。

复制代码 代码如下:


    function Person(){
            this.age=25;
            this.job="web";
    }
    Person.prototype={
        name:'pingfan',
        sayName:function(){
                        alert(this.name);
                }
    }
    var person1=new Person();
    //来自构造函数,检测属性,也返回true
    alert(person1.hasOwnProperty("age"));
    //来自原型属性,返回false
    alert(person1.hasOwnProperty("name"));
    person1.name='ping';
    //来自实例属性,返回true
    alert(person1.hasOwnProperty("name"));

  2.通过instanceOf保证只实例一次

复制代码 代码如下:


 function shiCha(opt){
    //只实例一次
    if( !(this instanceof shiCha)){
        return new shiCha(opt);
    }               
}
var shicha = shiCha();

  3.javascript中Array.prototype.slice.call(arguments)  

  我们通常看到Array.prototype.slice.call(arguments,1)或者Array.prototype.slice.call(arguments),都有点摸不着头脑,其实我们就是借助Array.prototype中slice()将arguments变成一个数组,并且使用该数组工作更方便,第二个参数是从索引值,开始将其变成数组,例Array.prototype.call("22223",2)和Array.prototype.call([1,2,3,4],2),从字符串第二个开始。

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfdgz.html