javascript学习7-细节总结

学习js,总结了一些需要注意的细节部分,和大家一起分享,共同进步。

一、javascript区分大小写
js数据类型:
1.基本数据类型-数值型,字符串型,布尔型
2.复杂类型:数组,对象
3.特殊类型:null,undefined
二、javascript中函数2种调用方式
1.根据函数名直接调用,如:test(num1,num2);//此处test为自己写的一个函数。
2.将函数名赋值给变量,变量名(实参)方式来调用。如:var myFun=test; myFun(num1,num2);
备注:
alert(test)中此时会打印出整个函数的内容,当赋值函数给变量名时,var myFun=test;alert(myFun)此时也会打印test函数体。
三、函数返回值说明
var myFun=test(num1,num2);此时如果test有返回值,则myFun为返回值,否则为undefined
四、javascript支持可变参数
比如:

function test()
{
for(var i=0;i<arguments.length;i++)
{
alert(arguments[i]);
}    
}
test(1,2);
test(100);


//备注:javascript函数不支持重载。函数名相同参数不同javascript不支持。js只关注函数名
五、javascript一维数组

var a=[1,2,3];
for(var i=0;i<a.length;i++)
{
alert(a[i]);
}

1.数组的引用:数组名[下标]
var a=[23,'hello',4.5];
alert(a[2]);
2.如果下标越界,则输出undefined。
3.js数组可以动态增长。
4.对字符串可以用split分割成字符串数组
5.数组可以存放任意类型数据
6.for in用法(了解)

var arr=['a','b','c','hello'];
arr['dd']='gaga';
for(var key in arr)
{
alert(key+":"+arr[key]);
}

 


六、javascript二维数组
允许每行列数不同。

var arr2=[['a','b','d'],['c','d','e','f']];
for(var i=0;i<arr2.length;i++)
{
//输出第一行
for(var j=0;j<arr2[i].length;j++)
{    
document.writeln(arr2[i][j]+"&nbsp");
}
document.writeln("<br/>");
}

 

 

七、二分查找(见js学习6小练习2)


八、javascript 类与对象
javascript所有东西都是对象,基于对象语言。
javascript中么有类,只有原型对象,但是很多人就将此叫做类。

九、创建对象的方法
a.工厂方法-使用new object俩创建对象并添加相关属性
b.使用构造函数定义类(原型对象)

eg.//此处使用构造函数定义类
function Person(){}
var a=new Person();
window.alert(a.constructor);
var b="1234";
alert(b.constructor);
if( a instanceof Person)
{
alert("a 是person");
}

 

eg2://属性名称访问
访问属性方法有两种:
1.普通方式 -对象名.属性名
2.动态访问- 对象名["属性名"]

var abc=89;
function Person()
{
}
var p1=new Person();
p1.name="watermelon";
alert(p1.name);
var val="na"+"me";
p1["name2"]="嘎嘎嘎";
alert(p1.name2);
p1[val]="watermelon222";
alert(p1[val]);

 

十、js回收机制
js提供一种机制,主动释放对象内存:delete功能说明

function Person(){}
var a=new Person();
a.age=50;
delete a.age;
//delete只能删除对象属性,无法删除一个对象属性

function Person()
{
var nam="abc";//私有属性,创建类的对象时不能访问
var age=900;

}

 

十一、this定义使用
this不能放在类定义外部使用

十二、prototype使用

function Dog(){
}
Dog.prototype.shout=function()
{
//绑定功能到DOG
alert("dog");
}
var dog1=new Dog();
var dog2=new Dog();
dog1.shout();
dog2.shout();
//此处dog1和dog2的shout函数是公共的,指的是一个函数。

十三、javascript基于类object
//初步体验object类的用法

var p=new Object();
p.name="dd";
//array数组
//给array添加一个方法为find(val),返回val的位置
var p1=new Array();
Array.prototype.find=function(val){
for(var i=0;i<this.length;i++)
{
if(val==this[i])
{
return i;
}
}
return -1;
}
p1[0]=1;
p1[1]=2;
p1[2]=3;
alert(p1.find(3));
//结果返回2

十四、javascript中prototype设置的函数 不能访问私有属性

十五、javascript的继承关系
1对象冒充-可以实现多重继承
function Stu(name,age)
{
this.name=name;
this.age=age;
this.show=function()
{window.alert("name="+this.name+";age="+this.age);}
}
function MidStu(name,age)
{
this.stu=Stu;
this.stu(name,age);//通过对象冒充的方式来达到继承的效果。备注:如果此句话没有写,就没有实现继承。

}
var midStu1=new MidStu("赵玉婷",20);
midStu1.show();

2、js中重载和重写
2.1、js不支持重载,即不可以通过参数的个数来决定调用哪一个函数,但是js本身支持可变参数,所以可以看成js支持重载。
例如 function abc(){ if(arguments.length==1)...}
2.2、重写:js子类可以重新编写父类的某个方法来实现对其覆盖。

十六、javascript 多态
1、有食物(),人,动物三个类

//主人喂食物给动物
function Master()
{
this.feed=function(animal,food){
document.write("主人给"+animal.name+food.name);
}
}
function Food(name)
{
this.name=name;
}
function Fish(name)
{
this.food=Food;
this.food(name);
}
function Bone(name)
{
this.food=Food;
this.food(name);
}
//动物
function Animal(name)
{
this.name=name
}
function Cat(name)
{
this.animal=Animal;
this.animal(name);
}
function Dog(name)
{
this.animal=Animal;
this.animal(name);
}
var cat=new Cat("小猫咪");
var dog=new Dog("小狗狗");
var fish=new Fish("小鱼");
var bone=new Bone("小骨头");
var master=new Master("西瓜");
master.feed(cat,fish);

十七、闭包

function A()
{
var i=0;
function b()
{
alert(i);
}
return b;
}
var c=A();
c();//此种方法下,由于b中有对临时变量i的操作,故i不能被回收。c()相当于b()
A();//此种方法下,gc垃圾回收机制会直接对垃圾进行回收。

 

posted @ 2014-05-21 22:00  testForever  阅读(202)  评论(0编辑  收藏  举报