首页 web前端 js教程 jQuery原型属性和原型方法详解_jquery

jQuery原型属性和原型方法详解_jquery

May 16, 2016 pm 03:51 PM
jquery

首先看一下在jQuery1.7.1中定义的原型属性和方法有哪些?

首先是constructor属性 

相信熟悉js面向对象部分的开发人员都熟悉,就是用来返回对象属性创建的函数,举个简单的例子:

1

2

3

function Person(){};

    var person=new Person();

    alert(person.constructor); //function Person(){}

登录后复制

我们写继承的时候喜欢把所有的原型属性和方法放在一个单独的对象字面量中,这样就会导致constructor属性与“实际”指向不符合例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

function Person(){

 

  }

 

  Person.prototype={

    say:function(msg){

      alert(msg);

    }

  }

 

  var person=new Person();

  person.say('hello');

  alert(person.constructor); //function Object(){[native code]}

登录后复制

这个时候的指向就会变化因为字面量对象是Object的一个实例自然constructor属性就会执行Object为了纠正这个“错误”通常需要手动修改回来这就是源码,源码中constructor:jQuery的解释

selector属性

selector属性对于使用jquey作为js库来说没有用处它主要是用于开发基于jquery的插件或者改造使用,该属性会返回获取当前的jquery对象的选择器字符串,例如:

1

2

var obj=$('div a');

console.log(obj.selector);//'div a'

登录后复制

jquery属性

该属性返回当前使用的jQuery版本

1

console.log($('body').jquery); //1.7.1

登录后复制

length属性

该属性返回jquery对象包含的元素个数例如:

1

console.log ( $('body') .length); //1

登录后复制

这4个属性源码如下:

1

2

3

4

5

6

7

8

9

10

11

constructor: jQuery,

 

 

// Start with an empty selector

selector: "",

 

// The current version of jQuery being used

jquery: "1.7.1",

 

// The default length of a jQuery object is 0

length: 0,

登录后复制

size方法

1

2

3

4

// The number of elements contained in the matched element set

  size: function() {

    return this.length;

  },

登录后复制

该方法就是返回jquery对象的length属性两者而言推荐使用length属性,可以减少不必要的函数调用开销

toArray方法

1

2

3

toArray: function() {

    return slice.call( this, 0 );

  },

登录后复制

把jQuery集合中所有DOM元素恢复成一个数组。

1

2

alert($('li').toArray());

[<li id="foo">, <li id="bar">]

登录后复制

首先这里的slice方法在jQuery的构造函数里面已经被保留下来,就是Array的原型方法

1

2

3

4

5

6

7

// Save a reference to some core methods

87 toString = Object.prototype.toString,

88 hasOwn = Object.prototype.hasOwnProperty,

89 push = Array.prototype.push,

90 slice = Array.prototype.slice,

91 trim = String.prototype.trim,

92 indexOf = Array.prototype.indexOf,

登录后复制

通过call方法实现对象冒充,传入参数0表示不进行截取,由于此方法会返回一个 clean array 也就是纯数组这样就实现了从jquery对象到纯数组的转变,在以后遇到其他类数组形式时也可以采用此方法进行转换例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<!doctype html>

<html>

  <head>

    <meta charset='utf-8'/>

    <title>jQuery源码分析-原型属性和方法</title>

  </head>

  <body>

    <div>

    </div>

    <div></div>  

  </body>

  <script src='jquery-1.7.1.js'></script>

  <script>

  var divs=document.getElementsByTagName('div');

  console.log(divs); //[div, div]

  alert(divs instanceof Array); //fasle

 

  alert(Array.prototype.slice.call(divs,0) instanceof Array); //true

  </script>

</html>

登录后复制

所以学习jqeury源码除了对使用jquery有帮助之外还能学到很多js的使用技巧

get方法

1

2

3

4

5

6

7

8

9

10

11

// Get the Nth element in the matched element set OR

// Get the whole matched element set as a clean array

  get: function( num ) {

    return num == null &#63;

 

      // Return a 'clean' array

      this.toArray() :

 

      // Return just the object

      ( num < 0 &#63; this[ this.length + num ] : this[ num ] );

  },

登录后复制

此方法的作品是从jquery对象的元素数组中找到其中的某一个并且返回js原声node元素对象而不是jquery对象,这是跟eq方法不同的地方 ,此方法接受一个参数如果参数不存则调用toArray方法返回包涵所有元素的数组,如果是大于0的数直接通过下下标的方式获取即可如果是负数则通过与长度相加获得我们写某些方法需要支持正负数下标的一个很好的方法。如果写的不是数字,或者超过当前对象所包含的元素长度会返回undefined.

以上所述就是本文的全部内容了,希望大家能够喜欢。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门工具标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

jQuery引用方法详解:快速上手指南 jQuery引用方法详解:快速上手指南 Feb 27, 2024 pm 06:45 PM

jQuery引用方法详解:快速上手指南

jQuery中如何使用PUT请求方式? jQuery中如何使用PUT请求方式? Feb 28, 2024 pm 03:12 PM

jQuery中如何使用PUT请求方式?

jQuery如何移除元素的height属性? jQuery如何移除元素的height属性? Feb 28, 2024 am 08:39 AM

jQuery如何移除元素的height属性?

jQuery小技巧:快速修改页面所有a标签的文本 jQuery小技巧:快速修改页面所有a标签的文本 Feb 28, 2024 pm 09:06 PM

jQuery小技巧:快速修改页面所有a标签的文本

深度剖析:jQuery的优势与劣势 深度剖析:jQuery的优势与劣势 Feb 27, 2024 pm 05:18 PM

深度剖析:jQuery的优势与劣势

使用jQuery修改所有a标签的文本内容 使用jQuery修改所有a标签的文本内容 Feb 28, 2024 pm 05:42 PM

使用jQuery修改所有a标签的文本内容

了解jQuery中eq的作用及应用场景 了解jQuery中eq的作用及应用场景 Feb 28, 2024 pm 01:15 PM

了解jQuery中eq的作用及应用场景

PHP常用的文件操作函数总结 PHP常用的文件操作函数总结 Apr 03, 2024 pm 02:52 PM

PHP常用的文件操作函数总结

See all articles