首页 > 代码库 > javascript基础

javascript基础

document.write();              //是在浏览器页面上输出
alert();                                 //弹出对话框
 
 
javascript中方法获取的参数使用argument[i]不需要定义 课根据传参自动获取
function(1,2,3)
{
   alert(argument[0]);
   alert(argument[1]); 
   alert(argument[2]);
}
 
argument[0]=1;
argument[1]=2;
argument[2]=3;
 
--------------------------------------------------------------------------
全局与局部变量(特例):
function()
{
   var x=1;
   var y=2;
   var z=x+y;
 
}
 alert(z);  //此时z的值为undefinde
 
 
function()
{
  var x=1;
  var y=2;
  z=x+y;
}
alert(z);   //此时y值得3
 
函数体内必须声明var后才能使变量成为局部变量,否则该变量为全局变量(就算函数体外没有声明过该变量,仍然默认为全局变量)
 
建议:函数体内尽量使用var来定义局部变量
--------------------------------------------------------------------------
  encodeURI()
  decodeURI()
 
encodeURI(url):将字符串编码成URI
decodeURI(url):解码某个编码的URI
 
 
---------------------------------------------------------------------------
回调函数 匿名函数
function calc(x,y){
 
   return x()*y();
}
function x()
{
  return 3;
}
function y()
{
 return 4;
}
alert(calc(x,y));
 
 
 var test=function calc(x,y)   //参数为函数名
            {
 
                return x()*y();
            } 
            function x()
            {
                return 3;
            }
            function y()
            {
                return 4;
            }
                alert(test(x,y));
 
 
---------------------------------------------------------------------------
使用call和apply回调
function test1(a,b)
{
  return a*b;
}
alert(test1.call(test1,5,10));                            //使用test1对象调用call方法,(test1函数,test1函数参数1,test2参数2)
var params=[3,4];
alert(test1.apply(test1,params));
---------------------------------------------------------------------------
自调用:
优点:不会产生全局变量
缺点:只会执行一次
 
自调用只能使用一次  所以一般用来执行初始化任务
(function(){
   alert(‘Hello World‘);
}
)();
 
 
(function(a,b){                                 //自调用只能使用一次  所以一般用来执行初始化任务
             alert(a+b)
         })(3,4);
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
对象:
1.(字面量创建对象)
var obj={};    //声明一个对象
      alert(typeof obj);                                    //输出变量类型
 
      var obj1={x:1,y:2,z:3}  //x是属性名称 1是value值
      var obj2={
                 person:{
                          username:‘hello‘;
                          }
 
 
                }
2.(var obj = new Object()创建对象)
 
var obj = new Object();//创建空对象
var arr = new Array();//空数组
var data = new Data();时间对象
var reg = new RegExp(‘js‘);正则对象
 
 
3.通过构造函数创建对象
 
function Test(){
 
 
}
var obj = new Test();   //加上new代表创建对象,不加new代表函数
 
 
---------------------------------------------------------------------------
对象调用属性:
 var Userinfo = {
            username:‘liijianwei‘,
            userid:5120140516,       
        };
        alert(Userinfo.username);                        //类似于C语言的结构体
        alert(Userinfo.userid);
        console.log(Userinfo.username);                  //控制台输出
 
 
**可以使用instanceof来检查对象是否为指定的构造函数创建的
 
用法: alert (obj5 instanceof Test);
 
 
4.Object.create()创建对象
var obj = Object.create({x:1})
var obj = Object.create(null)  // 创建空对象
 
---------------------------------------------------------------------------
对象属性调用方法:
两种方法:
1.用点调用
2.用方括号
(但当属性名不确定时,必须使用方括号,因为可以在程序运行中动态的改变属性的名字 )
例如,当一个属性不存在于对象中时,用点去调用就会显示Udefined
例子:
var key=‘username;
person.key    会显示undefined
person[key]   则可以取出username中的值
 
实现代码:
    var person={
            name:‘李建威‘,
            gander:‘男‘,
            address:‘西科大‘
        }
            person.address="海口";        //修改属性
            var key= "name";              //注意赋值时要加双引号
            alert(person.key);
            alert(person[key]);
        alert(person.address);
-----------------------------------------------------------------------------
 
 var Userinfo = {
            username:‘liijianwei‘,
            userid:5120140516,       
        };
        alert(Userinfo.username);                        //类似于C语言的结构体
        alert(Userinfo.userid);
        alert([Userinfo.username]);                      //使用方括号调用属性
        console.log(Userinfo.username);                  //控制台输出
        var key=‘username‘;
        //当属性不确定时候使用[]形式调用
        alert(Userinfo[key]);
 
 
--------------------------------------------------------
new function的形式得到  
 
    function Test(name,id,sex){                          //构成函数创建对象
            this.name=name;                          //当处于某个对象方法内部时,
                                                         //可以使用this来访问同一对象的属性
            this.id=id;
            this.sex=sex;
        }
        var test = new Test(‘李建威‘,‘5120140516‘,‘男‘);
        alert(test.name);
        alert(test.id);
        alert(test.sex);         
 
放处于某个对象方法内部的时候,可以通过this来访问同一对象属性
 
 
 
 
 var obj={};
       obj.username=‘lijianwei‘;
       obj.userid=‘5120140516‘;
       obj.usersex=‘男‘;
       obj.username=‘lilili‘;                   //修改属性
       obj[‘test‘]=‘hello world!!!‘;
       alert(obj.username+‘\n‘+obj.userid+‘\n‘+obj.usersex);
       alert(obj[‘test‘]);
 
 
---------------------------------------------------------------------------
通过delete删除指定属性:
*delete只能删除自身属性,但不能删除继承属性
 
 
 var obj={};
       obj.username=‘lijianwei‘;
       obj.userid=‘5120140516‘;
       obj.usersex=‘男‘;
       obj.username=‘lilili‘;                   //修改属性
       obj[‘test‘]=‘hello world!!!‘;
       alert(obj.username+‘\n‘+obj.userid+‘\n‘+obj.usersex);
       alert(obj[‘test‘]);
       delete obj.test;                        //通过delete删除指定属性
       alert(obj[‘test‘]); 
 
 
 
---------------------------------------------------------------------------------
同过for in遍历属性:
 
  var test={
              name:"boyce",
              gander:"boy",
              address:"西科大"
          };
          for(var i in test)
          {             
              alert(i);                           
          }
 
---------------------------------------------------------------------------------
对象中有方法:
   var person={
                          name:"boyce",
                          gander:‘boy‘,
                          address:‘西科大‘,
                          SayHelloWorld: function(){
                              return ‘hello world‘;
                            }
                          };
                          alert(person.name);
                          alert(person.SayHelloWorld());            //调用方法是注意加括号
 
*****注意只有使用构造方法来声明对象,才能够自由的使用对象添加属性
 
---------------------------------------------------------------------------------
检测对象中是否存在某属性:
  var person={
                          name:"boyce",
                          gander:‘boy‘,
                          address:‘西科大‘,
                          SayHelloWorld: function(){
                              return ‘hello world‘+‘\n‘+this.name;       //使用this调用对象中的属性
                            }
                      };
                          alert(‘name‘ in person);                       //检测person对象中是否有name这个属性
 
 
 
---------------------------------------------------------------------------------
返回所有自由属性的名称:
object.getOwnPropertyNames(obj)
代码:
var person={
                          name:"boyce",
                          gander:‘boy‘,
                          address:‘西科大‘,
                          SayHelloWorld: function(){
                              return ‘hello world‘+‘\n‘+this.name;       //使用this调用对象中的属性
                            }
                      };
//                          alert(person.name);
//                          alert(person.SayHelloWorld());
//                          document.write(person.address);
                          alert(‘name‘ in person);                       //检测person对象中是否有name这个属性
                          alert(person.hasOwnProperty(‘name‘));          //判断name是不是可枚举的 
                          alert(Object.getOwnPropertyNames(person));     //返回所有自由属性的名称
 
 
---------------------------------------------------------------------------------
 set和get方法:
 
注意:set和get没有冒号
 
   var person={
                                 name:"boyce",
                                  gander:‘boy‘,
                                  address:‘西科大‘,
                                  get age(){
                                      return 1;
                                  },
                                  set age(val){
                                      alert(‘不能设置‘+val);
                                  }
 
                         };
                         alert(person.age);
                         alert(person.age=12);                 // 传值是=
 
get方法与Object.defineProperty()结合
 
   var person1={
                            name:‘boyce‘,
                            gander:‘boy‘,
                            address:‘西科大‘
                        };
                        Object.defineProperty(person1,‘name‘,{                                           
                            get:function(){                                                                                 //当get方法是对象字面量时,get不需要加冒号如例1,但当get方法不是对象字面量时就需要加冒号
                                return ‘sorry !My name is Andy‘; 
                            }
                        });
                        alert(person1.name); 
 
 
 
 
 
 
 
 
    

 

javascript基础