jQuery的基础效果题

Posted www-yang-com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery的基础效果题相关的知识,希望对你有一定的参考价值。

Jquery第二次考核

           之真金不怕火炼

1.  名词解释

   实例对象:var p1=new Person();  p1就是实例对象

   构造:function Person(){}

   原型对象:在 javascript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象补充:每个对象都有 __proto__ 属性,但只有函数对象才有 prototype 属性

  原型对象和构造的关系

在默认情况下,所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Person

Person.prototype.constructor == Person

还有下面的这个关系

person1.constructor == Person

   原型链:原型对象也是简单的对象并且可以拥有它们自己的原型。如果一个原型对象的原型是一个非null的引用,那么以此类推,这就叫作原型链。

 

 

2.  关于firstChild的问题

firstChild:返回节点的第一个子节点

小Tip:需要考虑兼容性问题:如下写法,可以兼容主流5大浏览器

 

 顺序不能颠倒

3.  关于节点类型

 

接口

nodeType常量

nodeType值

备注

Element

Node.ELEMENT_NODE

1

元素节点

Text

Node.TEXT_NODE

3

文本节点

Document

Node.DOCUMENT_NODE

9

document

Comment

Node.COMMENT_NODE

8

注释的文本

DocumentFragment

Node.DOCUMENT_FRAGMENT_NODE

11

document片断

Attr

Node.ATTRIBUTE_NODE

2

节点属性

4.  在页面上有个ul标签,其中有3个li,html结构如下:

   <ul id="myul">

    <li id="first">骆驼祥子</li>

    <li>缺心眼子</li>

    <li>鼠标垫子</li>

  </ul>

  请通过js代码在ul内部末尾处添加一个li节点

 

Var ul = document.getElementById(“ul”);

Var li = document.createElement(“li”);

Ul.appendchild(li);

5. function addNode(){

  1. 6.    //获得ul标签
  2. 7.    var ul=document.getElementById(‘ul‘);
  3. 8.    //创建li标签
  4. 9.    var li=document.createElement(‘li‘);
  5. 10.    //创建li文本
  6. 11.    var liText=document.createTextNode(‘005‘);
  7. 12.    li.appendChild(liText);
  8. 13.    ul.appendChild(li);
  9. 14.  };

15.            Jquery优势

体积小,压缩后只有100KB左右

强大的选择器   :Jquery 50%   选择器

出色的DOM封装

可靠的事件处理机制  

出色的浏览器兼容性

使用隐式迭代简化编程

丰富的插件支持

16.           $(document).ready()与window.onload的区别,站在三个维度回答问题

 

执行时机:$(document).ready:DOM结构绘制完毕后就执行,不必等到加载完毕。意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。并且可以写多个.ready

window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。

编写个数:window。Onload:同一页面只能编写一个。结果只能输出一次。

Ready:相反!

简化代码:$(function(){});

17.           JS和Jquery设置样式三种方式的罗列

jQuery方法:

  1. 1.设置css属性
  2. $(‘div‘).css(‘height‘,‘30px‘)
  3. $("div").css({fontSize:"30px",color:"red"})
  4. 2.使用attr方法
  5. $(‘div‘).attr(‘height‘,‘30px‘)

Js: 的引入样式的方式一:

<script type="text/javascript">

   alert(1);

</script>

方式二:

<script type="text/javascript" src="website.js">

   alert(1);

</script>

方式三:

 <a href="javascript:void(0)">热点文字</a>

 <input type="button" onclick="js函数"/>

 <input type="button" onclick="javascript:alert(1)"/>

 

Js的设置样式:

node.style.color = ‘red‘;

node.className = ‘testStyle‘;

element.style.cssText = ‘height: 100px !important‘;

23.           JS和Jquery获取文本值(表单元素和非表单元素)的罗列

Jquery的:

var lis = $(‘#first‘).html();

  alert(lis); */

    

/*   var inp = $(‘input‘).val();

Js的:

documentgetElementById(‘id‘).innerHTML    获取文本的内容;

documentgetElementById(‘id‘).value    获取文本框的内容;

 

 

 

24.           Jquery对象和DOM对象互转

1. DOM 对象转成 jQuery 对象

对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQuery 对象了,$(DOM 对象) 注: var是定义变量

如:

 

 

2. jQuery 对象转成 DOM 对象

两种转换方式讲一个 jQuery 对象转换成 DOM 对象: [index] 和 .get(index);

(1) jQuery 对象是一个数据对象,可以通过 [index] 的方法,来得到相应的 DOM 对象。

如: 

var $V=$("#v");//jQuery对象

var v=$v[0]//js对象

(2) jQuery 本身提供,通过.get(index) 方法得到相应的 DOM 对象

如:

var $v=$("#v");//jQuery对象

var v=$v.get(0)//js对象

 

 

 

25.           手写光棒效果,综合 使用Jquery的两大特性:隐式迭代和链式编程

//二jquery的光棒效果

  /* $("li").mouseover(function(){

     $(this).css("background","pink");

    

  }).mouseout(function(){

     $(this).css("background","");

  }); */

 

26.           层次选择器

 

 

27.           Integer和int考题

int和Integer

区别:

1、Integer是int的包装类,int则是java的一种基本数据类型 
2、Integer变量必须实例化后才能使用,而int变量不需要 
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 
4、Integer的默认值是null,int的默认值是0

 

关于Integer和int的比较 

1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

      

2、Integer变量和int变量比较时,只要两个变量的值是相等的,则结果为true

(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

 

3、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。

(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)

 

4.对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

 

 

 

 

14.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么呢?这个题目很模糊。如果几个Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样。但我估计你想问的问题是:如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload。这是不行的,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 

override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说在最熟悉的覆盖就是对接口方法的实现,接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:

1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,int));

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

 

 

 

15.说出ArrayList,Vector, LinkedList的存储性能和特性

  1.  ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
  2. LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始
  3. ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢.
  4. Vector使用了sychronized方法(线程安全),所以在性能上比ArrayList要差些.
  5. LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以索引数据慢,是插入数据时只需要记录前后项即可,所以插入的速度快.

arraylistvector的区别?
1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的
2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

 

16.分析代码, number_two<<number与将number_two不断左移1位(共移动number位)是否相同?什么条件下相同?






以上是关于jQuery的基础效果题的主要内容,如果未能解决你的问题,请参考以下文章

12个用得着的 JQuery 代码片段

几个非常实用的JQuery代码片段

几条jQuery代码片段助力Web开发效率提升

十条jQuery代码片段助力Web开发效率提升

十条jQuery代码片段助力Web开发效率提升

前端面试题之手写promise