1.函数名show和函数方法show()的使用区别
function show()//为声明式,定义代码先于函数执行代码被解析
{
alert("xxxxxxx");
}
var x=show//理解:function就是一个对象,而show就是show函数对象的地址,而x=show即接收的是shou()的地址
var x=show()//接收的是show方法的返回值
故定义变量 var show;后,不能再其后使用show()方法,因为指向show()方法的show值已经发生改变!!!因此,不要使用和函数同名的变量!
2.添加函数对象的属性
/*
Strawberry2013-5-9
*/
function Person()
{
alert("wowo");
}
var p = new Person(); //new 一个Person()函数,理解:该函数对象内部代码遍历一遍,返回该new对象的地址
p.name="zhangsan"; //在该地址封装的对象中加入属性
p.age=30;
p.mai = function() //在该地址封装的对象中加入函数,该属性得到的是匿名函数的地址
{
alert("maidongxi");
}
p.mai();
/*
Strawberry2013-5-9
*/
function Person(name, age)
{
var id = age; //私有成员
this.name = name; //公有成员
this.age = age;
this.getName = function()
{
return this.name;
}
}
function getMax(array)
{
//获得最大值语句
return max;
}
var p = new Person("zhangsan", 30); //new一个对象Person,返回地址p,将该地址对应的属性赋值
p.getMax = getMax; //使p对象具有getMax()函数功能,但Person不具有
alert(p["name"]+".111.."+p.age); //p["name"]可以理解为p为数组,在该数组中存在一个别名为name,返回name对应的值
alert("NAME:"+p.getName()+p.getMax());
3.for语句和with语句的用法
for(s in p) //s为遍历p的一个属性,由于p的属性集的类型不确定,不用定义
{
alert(s+":"+p[s]); //返回p[s]值
}
var arr=[3,5,8];
for(s in arr) //可以理解属性s为数组的下标
{
alert(arr[s]);
}
with(p) //凡在代码中较多的使用了点号(.),可以使用with语句,来简化手写
{
alert(name+"....."+age);
}
4.不同定义函数方法的解析过程
function show()// 声明式,定义代码先于函数执行代码被解析
{
alert("11111");
}
show();
function show()
{
alert("22222");
}
show();
执行结果为两行的22222!理解:将声明式看着系统的公有对象属性,要先被解析的~~动态式则不同
var t1 = function() // 动态函数,在函数运行中进行动态解析
{
alert("11111");
};
t1();
var t1 = function()
{
alert("11111");
};
t1();
执行结果为一行的11111和一行的22222~!在函数运行中进行动态解析
5.关于new操作符的使用规则
function Person(name, age)
{
this.name = name;
this.age = age;
}
var p = new Person("张三", 20);
JavaScript是一门基于原型的语言,但它却拥有一个 new 操作符使得其看起来像一门经典的面对对象语言。JavaScript中的数组并不象Java中的数组那样工作的,使用类似Java的语法只会让你糊涂。不要使用 new Number, new String, 或者 new Boolean,不要使用 new Function 去创建函数对象,用函数表达式更好。
原则很简单: 唯一应该要用到new操作符的地方就是调用一个构造器函数的时候。当调用一个构造器函数的时候,使用new的。
6.关于对象的prototype属性应用
function getMAX()
{
var temp = this[0]; //注意this的用法
for(var i=0; i<this.length; i++)
{
if(this[i] > temp)
temp = this[i];
}
return temp;
}
Array.prototype.getMax = getMAX;//将定义的函数地址值,附加给Array的prototype,使Array也具有该函数功能
var arr = [2, 4,1, 8, 3];
alert(arr.getMax()); //8