首页 > 代码库 > 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基础
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。