1.null和undefined
undefined:表示一个对象没有被定义或者没有被初始化。
null:表示一个尚未存在的对象的占位符。
undefined类型是null派生出来的所以,它们相等
alert(undefined==null)//输出true
2.typeof
未声明的对像只能用typeof运算符判断,并且typeof返回值为字符串所以,在进行类型比较时应为
var vItem;
if(typeof vItem=="undefined")
而
if(typeof vItem==undefined)永远为false
对于null而言,alert(typeof null);//输出object 。这其实是JavaScript最初实现的一个错误,但因为ECMAScript的沿用,成为了现在的标准。所以需要将null类型理解为“对象的占位符”
3.变量声明
js是若类型语言,即使变量类型在初始化时已经被确认,仍然可以在之后改变
var vItem=1;
alert(typeof item); //输出number
vItem="1";
alert(typeof item) ;//输出string
js的变量声明可以为var iItem=1;也可以在隐式声明 iItem=1;但需要注意的是,隐式声明的变量总被创建为全局变量,即使在函数中也是一样
function test(){
iItem=1;
}
this.test();
alert(iItem);
4.JavaScript命名规范
js命名推荐匈牙利命名法 比如 function fnMethod(){}
下面是匈牙利命名法的前缀列表:
类型 |
前缀 |
示例 |
Array |
a |
aNameList |
Boolean |
b |
bVisible |
Float |
f |
fMoney |
Function |
fn |
fnMethod |
Int |
i |
iAge |
Object |
o |
oType |
Regexp(正则表达式) |
re |
rePattern |
string |
s |
sName |
可变类型 |
v |
vObj |
5.使用原型prototype实现js面对对象
原型,表示对象的初十状态,JavaScript中的每个对象都有一个prototype 属性,但是只有function类型的prototype属性可以使用脚本直接操作
Object的prototype属于内部属性,无法直接操作。prototype属性本身就是一个objece类型,一个函数的prototype上所定义的属性和方法都会在
其实例对象上存在。所以说prototype就是C#中的实例方法和实例属性
function fnStaticClass(){}//声明一个类
fnStaticClass.statMethod=function (){alert("static method")}; //创建一个静态方法
fnStaticClass.prototype.instanceMethod=function(){alert("instacne method")};//创建一个实例方法
fnStaticClass.statMethod();//直接调用静态方法
instance.instanceMethod();//在实力上调用实例方法