Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all articles
Browse latest Browse all 11804

javaScript高级技巧

$
0
0
一、变量作用域和闭包
注意: uncaught refereceError:is not defined 和 undefined 不是一样

js是函数级作用域,在内部的变量,函数内部都能访问,函数外部不能访问函数内部的变量,函数内部能访问外部的变量

注意:在函数里声明变量,都会提到函数的最前面

如何可以在函数外部拿到函数内部的变量,就需要使用闭包(注意使用,闭包会造成内存泄露)

代码例子

function test(){

   var k = 1000;
   return function(){
       return k ;
   }
}

var t = test()();//t的值是1000;


二、this的使用(谁调用this就指向谁)

代码例子
闭包的使用
this.m=1000;
var obj = {
   m:100,
   test : function(){
          alert(this.m);//值是100
          return function(){
              alert(this.m);//值是1000
          }  
   }
}
执行 (obj.test())();

面向切面的使用
this.a=1000;
function test(){
  this.a = 1;
}
test.prototype.geta = function(){ //将方法挂在原型上
  return this.a;
}
执行
var p = new test();
console.log(p.geta());//值是1


三、按值传递

1、如果将Stirng、number、boolean作为变量传递给函数,函数内部的修改不会影响外面的变量值。
2、如果将object、或者array传递给函数,函数内部的修改会影响外面的变量值。


四、通过原型链继承 (面向对象)

function People(){

}
People.prototype.say = function(){
  alert("hello world")
}

function Student(){

}

var super = Student.prototype.say;

Student.prototype.say = function(){
    super.call(this)//子类调用父类的方法
    alert("stu-hello");
}

Student.prototype = new People();//通过原型链来继承
var s = new Student();
s.say();

五、面向对象封装
(function(){

  var n = "ime" (只能在内部使用变量)
  function People(){

  }
  People.prototype.say = function(){
   alert("hello world")
  }
  
  window.People = People ;(对外提供一个接口)
})()


六、DOM事件处理

1、DOM0级事件处理,如果多次绑定一个事件,那么事件会被覆盖。
2、DOM2级事件处理,一个事件多次绑定,并不会覆盖,是依次执行。
3、阻止事件冒泡:event.stopPropagation();
4、阻止默认行为:如超链接标签的默认行为是连接到其他界面,event.preventDefault()可以阻止。












已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐




Viewing all articles
Browse latest Browse all 11804

Trending Articles